为什么快速排序比计数排序好?

Why is quick sort better than counting sort?

快速排序:

计数排序:

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

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

排序并不总是 'better' 彼此相差。在某些情况下,出于多种原因可能首选快速排序:

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

  2. 计数排序似乎是 O(n),但请看一下必须创建的中间计数数组。计数数组长度本质上是原始数组中最大元素和最小元素之间的差值。如果范围真的很大,这个计数阵是巨大的。例如,如果你的数组只有两个元素,但是这两个元素是 1 和 9999999 怎么办?并且必须处理这个计数数组(所有求和和计数的东西)。所以实际上,计数排序的 运行 时间是 O(n+k) 其中 k 是原始数组中最大和最小元素之间的差异。

  3. 最后,计数排序似乎...如果您要排序的元素不是数字,则很难实现。它如何适用于字符串?