为什么快速排序比计算排序更好?

时间:2017-12-10 07:38:29

标签: c algorithm sorting quicksort counting-sort

快速排序:

  • 最坏情况o(n ^ 2)
  • 平均情况O(nlogn)

计数排序:

  • 在所有情况下o(n)

快速排序和计数排序都是稳定的算法。

如果存在这两个条件,为什么快速排序仍然比计算排序更好?

1 个答案:

答案 0 :(得分:10)

排序并不总是比其他人“更好”。在某些情况下,出于以下原因,快速排序可能更受欢迎:

  1. Quicksort已经到位,不像计数排序,它必须创建一些数组(例如使用更多内存)来完成它的工作。

  2. 看起来计数排序是O(n),但看看必须创建的中间计数数组。计数数组长度基本上是原始数组中最大和最小元素之间的差异。如果范围非常大,那么这个计数阵列非常庞大。例如,如果您的数组只有两个元素,但两个元素是1和9999999怎么办?并且必须处理这个计数数组(所有总和和计数的东西)。实际上,计数排序的运行时间是O(n + k),其中k是原始数组中最大和最小元素之间的差异。

  3. 最后,如果您尝试排序的元素不是数字,那么计算排序似乎很难实现。它对字符串有什么作用?