无聊时总结总结算法之09基数排序
2016-02-19 15:00
162 查看
##
基数排序 ##
基数排序是非比较排序算法,算法的时间复杂度是O(n)。
基数排序的主要思路是,将所有待比较数值(注意,必须是正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始, 依次进行一次稳定排序,这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
比如这样一个数列排序:
342 ,58, 576, 356, 以下描述演示了具体的排序过程(红色字体表示正在排序的数位)
第一次排序(个位):
3
4 2
5
7 6
3
5 6
0
5 8
第二次排序(十位):
342
356
05
8
57
6
第三次排序(百位):
05
8
3
4 2
3
5 6
5
7 6
结果:
58 342 356 576
基数排序 ##
基数排序是非比较排序算法,算法的时间复杂度是O(n)。
基数排序的主要思路是,将所有待比较数值(注意,必须是正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始, 依次进行一次稳定排序,这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
比如这样一个数列排序:
342 ,58, 576, 356, 以下描述演示了具体的排序过程(红色字体表示正在排序的数位)
第一次排序(个位):
3
4 2
5
7 6
3
5 6
0
5 8
第二次排序(十位):
342
356
05
8
57
6
第三次排序(百位):
05
8
3
4 2
3
5 6
5
7 6
结果:
58 342 356 576
#include<iostream> using namespace std; #include <vector> int data[10]={73, 22, 93, 43, 55, 14, 28, 65, 39, 81}; int tmp[10]; int count[10]; int maxbit(int data[],int n) { int d=1; for(int i=0;i<n;i++) { int c=1; int p=data[i]; while(p/10) { p=p/10; c++; } if(c>d) d=c; } return d; } void RadixSort(int data[],int n) { int d=maxbit(data,n); int r=1; for(int i=0;i<d;i++) { for(int i=0;i<10;i++)//装桶之前要先清桶 count[i]=0; for(i=0;i<n;i++) //记录每个桶的记录数 { int k=data[i]/r; int q=k%10; count[q]++; } for(i=1;i<10;i++)//计算位置 { count[i]+=count[i-1]; //cout<<count[i]<<" "; } for(int j=n-1;j>=0;j--) { int p=data[j]/r; int s=p%10; tmp[count[s]-1]=data[j]; count[s]--; //cout<<data[j]<<" "; } for(i=0;i<n;i++) { data[i]=tmp[i]; //cout<<tmp[i]<<" "; } // cout<<endl; r=r*10; } } int main() { cout<<"基数排序c++实现"<<endl; //cout<<maxbit(data,10)<<endl; cout<<"排序之前的数值:"; for(int i=0;i<10;i++) cout<<data[i]<<" "; cout<<endl; RadixSort(data,10); cout<<"排序之前的数值:"; for(int i=0;i<10;i++) cout<<data[i]<<" "; cout<<endl; return 0; }
相关文章推荐
- 提高第三方app的service优先级
- gcc结构体对齐的误用
- gets、puts、fgets、fputs
- CentOS6.4 配置iptables
- Microsoft Remote Tools
- 实时获取输入框字数(移动端)
- Intent
- Hibernate一级缓存
- [从头学数学] 第96节 扇形统计图
- 百度地图定位
- Modernizr——为HTML5和CSS3而生!
- android canvas save 和 restore 用法
- 大型网站图片服务器架构的演进
- java 延迟阻塞队列详解
- ubuntu-kvm上面deploy qcow2格式虚拟机
- vim 替换
- 基于Selenium的Web自动化测试脚本在IE上运行慢的解决方法
- codevs2776寻找代表元
- tomcat 宕机原因排查
- 关于插件管理器Alcatraz