List 对链表进行堆排序 我试图在C++中创建一个排序函数,它使用堆排序对链表对象进行排序,但我不知道如何开始。有人能告诉我怎么做吗?我甚至不知道如何对链表进行排序

List 对链表进行堆排序 我试图在C++中创建一个排序函数,它使用堆排序对链表对象进行排序,但我不知道如何开始。有人能告诉我怎么做吗?我甚至不知道如何对链表进行排序,list,sorting,linked-list,heap,List,Sorting,Linked List,Heap,是通过构建一个基于数据的链接来实现的。只有在必须创建每个元素时,堆才是有效的 第一步是创建一个指向列表对象的指针数组,这样就可以对数组执行通常的堆排序 最后一步是将指针数组转换回链表 一种更好的链表排序方法是——不仅仅是因为您可以将排序作为链表实现的insert()函数的一部分来执行。通过构建一个数据。只有在必须创建每个元素时,堆才是有效的 第一步是创建一个指向列表对象的指针数组,这样就可以对数组执行通常的堆排序 最后一步是将指针数组转换回链表 一种更好的链表排序方法是——不仅仅是因为您可以在链

是通过构建一个基于数据的链接来实现的。只有在必须创建每个元素时,堆才是有效的

第一步是创建一个指向列表对象的指针数组,这样就可以对数组执行通常的堆排序

最后一步是将指针数组转换回链表

一种更好的链表排序方法是——不仅仅是因为您可以将排序作为链表实现的
insert()
函数的一部分来执行。

通过构建一个数据。只有在必须创建每个元素时,堆才是有效的

第一步是创建一个指向列表对象的指针数组,这样就可以对数组执行通常的堆排序

最后一步是将指针数组转换回链表


一种更好的链表排序方法是——不仅仅是因为您可以在链表实现的
insert()
函数中执行排序。

我必须同意sarnolds的答案。堆集链表的效率极低,原因有很多,但第一个原因是它们应该在初始放置时进行排序。也就是说,如果我要尝试,我会创建一个
arraylistlinks
将所有链接加载到其中。然后你就可以把它们堆起来分类。完成后,只需重新加载链接列表,从标题开始

我不得不同意萨诺尔德的回答。堆集链表的效率极低,原因有很多,但第一个原因是它们应该在初始放置时进行排序。也就是说,如果我要尝试,我会创建一个
arraylistlinks
将所有链接加载到其中。然后你就可以把它们堆起来分类。完成后,只需重新加载链接列表,从标题开始

HeapSort之所以好有两个原因-
1-这是一种就地算法。
2-O(nlogn)的时间复杂度

O(nlogn)是因为数组的随机访问特性,但如果使用链表,则无法获得数组的随机访问优势。 因此,时间复杂度将变为O(n^2)。这不利于分类


我建议您对链表使用合并排序算法。

HeapSort很好,有两个原因-
1-这是一种就地算法。
2-O(nlogn)的时间复杂度

O(nlogn)是因为数组的随机访问特性,但如果使用链表,则无法获得数组的随机访问优势。 因此,时间复杂度将变为O(n^2)。这不利于分类

我建议您对链表使用合并排序算法