|
|
1
2
只需使用堆排序。它已经就位。这将是最自然的选择。 您也可以使用堆,并使用其他算法对其进行排序。然后,根据排序列表重新构建堆。快速排序是一个很好的选择,因为您可以确保它不会以最坏的O(n)顺序运行,因为您的堆已经预先排序。 如果比较函数比较昂贵,则速度可能会更快。堆排序通常会计算比较函数。 |
|
|
2
1
smoothsort ,对于几乎已排序的数据,其速度比heapsort快。 |
|
|
3
0
在适当的位置对堆进行排序听起来像是一项工作 Heap Sort .
|
|
|
4
0
heap sort ? 它在适当的地方工作,应该是好的和有效的。 |
|
|
5
0
一般的想法很简洁:将最小的元素(索引为0)与堆中的最后一个元素交换,将该元素向下冒泡,直到恢复heap属性,将堆的大小缩小1,然后重复。 正如David Mackay所演示的,这并不是非就地排序的最快方法 here -您可以将一个更可能是最小的元素放在堆的顶部,而不是放在最下面一行。
|
|
|
6
-1
逐个读取堆顶部的项目。基本上就是堆排序。 |
|
|
Rewind · 同时搜索最大值/最小值的操作顺序 1 年前 |
|
|
badbee · 使用xsl:sort时保留未排序元素的问题 1 年前 |
|
|
josepmaria · Pandas顺序列,按对列出 1 年前 |
|
|
BTBts · Python3文件名的字母数字排序[重复] 1 年前 |
|
|
Paul-ET · 对树状图应用程序发送的第一列进行排序失败 1 年前 |
|
VonDerHase · 从列表中删除特定值,Python 1 年前 |
|
|
Nico44044 · JS对数组进行排序,数组末尾为null和空值 1 年前 |