为什么快速排序(或介绍排序)或任何基于比较的排序算法比基数排序更常见?特别是对于数字排序。
基数排序不是基于比较的,因此可能比 O(n日志)。其实还可以n),其中 k 是用于表示每个项目的位数。并且内存开销并不重要,因为您可以选择要使用的存储桶的数量,并且所需的内存可能小于合并排序的要求。
和缓存有关系吗?或者也许访问数组中整数的随机字节?
我想到了两个论点:
-
Quicksort/Introsort 更灵活:
Quicksort 和 Introsort 可以很好地处理所有类型的数据。排序所需的只是比较项目的可能性。这对于数字来说很简单,但您也可以对其他数据进行排序。
另一方面,基数排序只是按二进制表示形式对事物进行排序。它从不将项目相互比较。
-
基数排序需要更多内存。
我见过的所有基数排序实现都使用辅助缓冲区来存储部分排序结果。这增加了排序算法的内存需求。如果您只对几千字节进行排序,这可能不是问题,但如果您对千兆字节范围进行排序,则会产生巨大的差异。
如果我没记错的话,纸上存在一个就地基数排序算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)