Timsort、Quicksort 和 Mergesort 等算法在“真实世界“排序方法。这些比较排序的案例非常实用——它们已被证明是在各种环境中性能最高、最稳定、多用途的排序算法。
然而,似乎我们在计算机上排序的几乎所有内容都是可数/部分排序的。数字、字符、字符串,甚至函数都适合某种有意义的非比较排序方法。这里的候选者是基数排序。一般来说,它的运行速度比 O(n*log(n)) 更快,在许多情况下大大超过了 n * log(n) 的理论比较排序限制,复杂度为 O(K*n) -- K是表示特定项目所需的位数。
是什么赋予了?
比较排序基于一个非常好的抽象:您所需要的只是一种比较两个元素的方法。然后,根据您的语言,使用模板(c ++),接口(java),类型类(haskell),函数对象(javascript)等。您可以对可以容纳任意类型的容器进行排序,您唯一需要的是实现比较。
如何对任意类型实现基数排序? :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)