排序算法 (11.基数排序)

Posted jackson1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法 (11.基数排序)相关的知识,希望对你有一定的参考价值。

什么是基数排序

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。

基数排序 vs 计数排序 vs 桶排序

这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:

基数排序:根据键值的每位数字来分配桶;
计数排序:每个桶只存储单一键值;
桶排序:每个桶存储一定范围的数值;

代码实现

技术图片

效率

对于给定的n个d位数,取值范围为[0,k],我们使用计数排序比较元素的每一位,基数排序耗时Θ(n+k),那么基数排序的复杂度为Θ(d(n+k))。

我们还是和快速排序进行比较,仅仅从渐进性来看,基数排序比快速排序要好,但是隐藏在Θ符号后面的常数项因子是不同的,基数排序循环次数比快速排序循环次数少,但是基数排序每次循环会比快速排序长。更多的时候我们使用哪一种是通过输入数据的特征以及主存容量是否宝贵来决定的。当我们需要原址排序或者主存容量宝贵的时候我们就更倾向于快速排序这样的原址排序。

以上是关于排序算法 (11.基数排序)的主要内容,如果未能解决你的问题,请参考以下文章

排序算法基数排序

基数排序代码

基数排序代码混淆

第十六周 项目1--验证算法--基数排序

第十六周 项目1--验证算法--基数排序

十大经典排序算法总结(基数排序)