排序算法在时间O(n)中运行并且也就地排序

时间:2011-04-16 18:06:00

标签: algorithm sorting

是否有任何排序算法的运行时间为O(n)并且还要进行排序?

5 个答案:

答案 0 :(得分:6)

有一些最好的案例场景是O(n),但可能是因为项目集已经排序了。你正在寻找一些更好的O(n log n)。

据说,排序算法的Wiki非常好。有一个表比较流行的算法,说明它们的复杂性,内存要求(表明算法是否“就地”),以及它们是否按原始顺序保留等值元素(“稳定性”)。

这个表格(来自上面的Wiki)提供了一些更有趣的表现:

有些显然比其他人更容易实现,但我猜测值得实施的那些已经在图书馆中完成,供你选择。

答案 1 :(得分:4)

没有

已经证明了一般排序的下限O(n log n)。

基数排序基于知道数据的数值范围,但实际上提到的就地基数排序需要多次传递才能获得真实数据。

答案 2 :(得分:2)

答案 3 :(得分:0)

取决于输入和问题。例如,1 ... n个数字可以在O(n)中进行排序。

答案 4 :(得分:0)

Spaghetti sort是O(n),虽然可以说不是原地。此外,它只是模拟的。