Omn*_*ity 18
答案是"你不想在链表上实现堆排序."
Heapsort是一个很好的排序算法,因为它O(n log n)和它就位.但是,当你有一个链表时,heapsort不再O(n log n)是因为它依赖于对数组的随机访问,而你在链表中没有.所以你要么丢失你的就地属性(但需要定义树状结构就是O(n)空间).或者您将需要不使用它们,但请记住,链接列表O(n)用于成员查找.这使得运行时复杂性O(n^2 log n)变得比bubbleort更糟糕.
只需使用mergesort.您已经有了O(n)内存开销要求.