1000个整数的最佳排序算法

时间:2014-02-13 06:28:24

标签: algorithm sorting

面试问题 - 以下哪一项最适合对1000个INTEGERS数组进行排序。 1.快速排序 2.Tim排序 3.合并排序 4.数排序。

我选择了快速排序,但我猜错了。任何人都能说出正确答案是什么以及如何解决?

4 个答案:

答案 0 :(得分:1)

如果您正在寻找最快的,Merge Sort。

答案 1 :(得分:1)

对于1000整数,空间复杂度无关紧要,因此mergesort是最好的,因为它给出了O(nlogn)而快速排序给出了最坏情况O(n^2)。计数排序假定整数在特定范围内,而在您的问题中并非如此。我可能会因为输入的大小和编码的简易性而引用bubble sort

答案 2 :(得分:0)

Timsort通常是最好的算法。它使用启发式来决定应该使用哪种排序算法(合并或插入排序)。如果最大值和最小值之间的差异很小,则只计算排序将是一个不错的选择。在某些情况下,Quicksort可以是O(n ^ 2)。

最糟糕的情况是Timsort是O(n log n),但最好的情况是O(n)。

答案 3 :(得分:0)

根据Timsort的Wikipedia条目,它将成为真实世界数据的“最佳”。

我试图在这里复制表格,但我的foo缺乏。

下表比较了timsort与其他比较分类的时间复杂度。

               Timsort     Merge       Quicksort    Insertion   Selection   Smoothsort
Best case      O(n)        O(n log n)  O(n log n)   O(n)        O(n^2)      O(n)
Average case   O(n log n)  O(n log n)  O(n log n)   O(n^2)      O(n^2)      O(n log n)
Worst case     O(n log n)  O(n log n)  O(n^2)       O(n^2)      O (n^2)     O(n log n)

Where O is theta.

我不知道counting sort如何比较。