高级/非常见的高效排序算法

时间:2009-12-12 18:09:23

标签: algorithm sorting complexity-theory

我知道有一些像:

还有一些不切实际的:

上述部分内容使用比较而其他部分则没有。

您知道存在哪些其他有效排序数的算法或技术吗? 即使它不适用于现实生活,也可以建议我使用它,或者它是不切实际但它必须是有效的,但如果它是计算解决方案会更好。

5 个答案:

答案 0 :(得分:7)

Spaghetti sort:你将意大利面条的长度剪成与你想要排序的数字相对应的长度。然后你敲击桌子上的意大利面条束,使它们的所有两端对齐。然后你按顺序选出最长的。设置时间很长,但实际的排序时间是恒定的。

维基百科有一整套sorting algorithms

答案 1 :(得分:3)

Python使用名为timsort的算法。

答案 2 :(得分:1)

sorting networks,如果您事先知道需要排序多少项,这可能是一种有效的排序方式。

答案 3 :(得分:1)

natural mergesort与“简单的mergesort”不同,值得单独提及(就像quickersort足以让quicksort的变化值得一提,但更是如此)。 Ned的答案提到的Python的时间序列是基于自然合并,顺便说一句。

哦,并且,Dobosiewicz排序AKA“梳子排序”,“代表bubblesort,因为shellort代表插入排序”(没有什么特别有效,但仍然值得一提)。

答案 4 :(得分:1)

Heapsort的一个很好的变体是Smoothsort。如果数据已经几乎排序(O(n)而不是O(n log n)),它的性能优于Heapsort。