我知道有一些像:
还有一些不切实际的:
上述部分内容使用比较而其他部分则没有。
您知道存在哪些其他有效排序数的算法或技术吗? 即使它不适用于现实生活,也可以建议我使用它,或者它是不切实际但它必须是有效的,但如果它是计算解决方案会更好。
答案 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。