Timsort、Quicksort 和 Mergesort 这样的算法在“现实世界”中占据主导地位。这些比较排序方法非常实用,已被证明是最高效、稳定、多功能的排序算法,在各种环境下都能发挥作用。
然而,似乎几乎所有需要在计算机上排序的内容都是可数的/部分有序的。数字、字符、字符串,甚至函数都可以使用某种有意义的非比较排序方法进行排序。其中一种选择是基数排序。通常情况下,它的表现速度比 O(n*log(n)) 更快,在许多情况下,其复杂度为O(K*n) -- K 是表示特定项所需的位数,远远超过理论上的比较排序极限 n * log(n)。
这是为什么呢?
然而,似乎几乎所有需要在计算机上排序的内容都是可数的/部分有序的。数字、字符、字符串,甚至函数都可以使用某种有意义的非比较排序方法进行排序。其中一种选择是基数排序。通常情况下,它的表现速度比 O(n*log(n)) 更快,在许多情况下,其复杂度为O(K*n) -- K 是表示特定项所需的位数,远远超过理论上的比较排序极限 n * log(n)。
这是为什么呢?
log n
- 这并不是基数排序能够击败基于比较的排序的真正原因。(2)Introsort不是唯一广泛使用的排序算法,至少有两个流行的标准库使用Timsort。 - user395760