排序算法系列之基数排序
来源:互联网 发布:淘宝的集分宝有什么用 编辑:程序博客网 时间:2024/06/06 18:37
基数排序
思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。再将各组连接起来,便得到一个有序序列。
最低位优先(Least Significant Digit first)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。
程序:
#define MAXBIT 3 //假定最高位为百位template<classT>void RadixSort(T *x,constintN){ vector<T>Bucket[10]; for(intb = 1; b <= MAXBIT; b++) { intbasicbit = pow(10 , b); for(inti = 0; i < N; i++) { intindex = (x[i] % basicbit) / (basicbit/10) ; Bucket[index].push_back(x[i]); } inti = 0; for(intj =0 ; j <= 9 ; j++) { for(intm = 0; m < Bucket[j].size(); m++) { x[i++]= Bucket[j][m]; } } }}
分析:
稳定性:稳定
时间复杂度:O(kn)->O(n)
空间复杂度:O(kn)->O(n)
0 0
- 排序算法系列之基数排序
- 排序算法系列:基数排序
- 排序系列之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 【排序算法】之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 就业季必看的职业规划
- Linux 和 Windows多线程函数对应表
- 【iOS开发系列】多线程开发
- onclientclick和onclick区别
- 三级导航纯CSS
- 排序算法系列之基数排序
- ListView中的事件onItemClick方法参数解析
- java调用bat文件
- NSCoding协议,遵循了NSCoding协议的数据模型,就可以利用归档进行数据存储了
- android 基础
- centos下 apache-cassandra-2.0.9安装
- iOS跳转到系统设置页
- JS中字符串转化与日期的相互转化及比较时间先后
- 怎样发布dll到nuget库