radix-sort基数排序 内部排序用count-sort
2015-06-07 20:43
369 查看
int radix_count_sort(int *A, int *d, int n){ //inner: count-sort int temp ; int k = 10; int Counter[k]; int i = 0, j = 0; for(i = 0; i < k; i++) Counter[i] = 0; for(i = 0; i < n; i++){ j = d[i]; Counter[j] = Counter[j]+1; } for(i = 1; i < k; i++) Counter[i] = Counter[i] + Counter[i-1]; for(i = n-1; i >= 0; i--){ //stable, count in reverse-way temp[ Counter[d[i]] - 1 ] = A[i]; Counter[d[i]] = Counter[d[i]]-1; } for(i = 0; i < n; i++) A[i] = temp[i]; return 0; }
int radix_sort(int *A, int n){ //radix = 10 int d1 ,d2 ,d3 ; for(int i = 0; i < n; i++) //低位起排 d1[i] = A[i]%10; radix_count_sort(A, d1, n); for(int i = 0; i < n; i++) d2[i] = (A[i]/10)%10; radix_count_sort(A, d2, n); for(int i = 0; i < n; i++) //最后排高位 d3[i] = A[i]/100; radix_count_sort(A, d3, n); for(int i = 0; i < n; i++) //输出排好序列 cout<<A[i]<<endl; return 0; }
int test(void){ int A[] = {14,115,329,122,716,491,210,114,861,277}; int n = sizeof(A)/ sizeof(int); radix_sort(A, n); return 0; }
结果:
相关文章推荐
- shell学习第三天
- ScoreProvider API
- Scoreable API 可打分
- [架构] ZeroMQ 深度探索(二)
- Latex插入项目符号和编号
- 在win8.1系统下运行VC++6.0
- 二分
- 【VB与数据库】——机房收费系统总览
- Varnish 学习笔记总结
- wordpress中表单插件加载缓慢如何解决
- 【吾日三省吾身】2015.6.07-涅槃行动第二十天
- AcousticScorer API 声学打分
- C++对C的实用性增强
- [架构] ZeroMQ 深度探索(一)
- C++对C的实用性增强
- 路由器安全测试工具 – Router Scan v2.51
- 大三了,我还是喜欢《青春派》
- 数据库进程间通信解决方案之MQ
- 日期时间
- 'A previous installation of Qt5 Visual Studio Add-in was detected'解决方案