是否有任何排序算法的运行时间为O(n)
并且还要进行排序?
答案 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),虽然可以说不是原地。此外,它只是模拟的。