快速排序:
- 最坏的情况o(n^2)
- 平均情况o(nlogn)
计数排序:
- 在所有情况下o(n)
快速排序和计数排序都是稳定的算法。
如果存在这两个条件,为什么快速排序比计数排序还要好吗?
类型并不总是比彼此更好。在某些情况下,由于多种原因,QuickSort可能是首选的:
-
QuickSort已经到位,与计数排序不同,它必须创建许多数组(例如使用更多内存)来完成其工作。
-
似乎计数排序是o(n),但是看一下必须创建的中间计数数组。计数阵列长度本质上是原始数组中最大和最小元素之间的差异。如果范围真的很大,则计数阵列将很大。例如,如果您的数组只有两个元素,但是两个元素是1和9999999?而且必须处理此计数阵列(所有总结和计数内容)。因此,实际上,计数排序的运行时间是O(n K),其中k是原始数组中最大和最小元素之间的差异。
- 最后,如果您要排序的元素不是数字,那么计数排序似乎很难实现。它如何适用于字符串?