数据结构与算法(C语言版)__基数排序
来源:互联网 发布:淘宝宝贝详情页怎么做 编辑:程序博客网 时间:2024/06/07 03:07
基数:
十进制的基数是10,二进制的基数是2,。。。
先排最低位LSD
也可以先排最高位MSD
下面看代码:
#include<iostream>#include<list>using namespace std;//返回最大数的位数int maxdigit(int data[], int n){ int d = 1; int p = 10; for (int i = 1; i < n; ++i){ while (data[i] >= p){ p *= 10; ++d; } } return d;}//排序void radixsort(int data[], int n){ int digits = maxdigit(data, 10); list<int> lists[10];//定义10个链表 int d, j, k, factor; for (d = 1, factor = 1; d <= digits; factor *= 10, d++){ for (j = 0; j < n; j++){ lists[(data[j] / factor)%10].push_back(data[j]); } for (j = k = 0; j < 10; j++){ while (!lists[j].empty()){ data[k++] = lists[j].front(); lists[j].pop_front(); } } for (int m = 0; m < n; m++) cout << data[m] << " "; cout << endl; }}int main(){ int data[10] = { 179, 208, 306, 93, 859, 984, 55, 9, 271, 33 }; radixsort(data, 10); cout << "排序后:"<<endl; for (int i = 0; i < 10; i++) cout << data[i] << " "; cout << endl; system("pause"); return 0;}
总结:基数排序的方法是速度比较快的,但是会浪费一倍的内存,如果数据是1M,那就要使用2M的空间。
0 0
- 数据结构与算法(C语言版)__基数排序
- 数据结构与算法(C语言版)__交换
- 数据结构与算法(C语言版)__冒泡排序
- 数据结构与算法(C语言版)__选择排序
- 数据结构与算法(C语言版)__顺序查找
- 数据结构与算法(C语言版)__二分查找
- 数据结构与算法(C语言版)__递归
- 数据结构与算法(C语言版)__排列组合
- 数据结构与算法(C语言版)__插入排序
- 数据结构与算法(C语言版)__快速排序
- 数据结构与算法(C语言版)__归并排序
- 数据结构与算法(C语言版)__栈
- 数据结构与算法(C语言版)__队列
- 数据结构与算法(C语言版)__链表
- 数据结构与算法(C语言版)__链表2
- 数据结构与算法(C语言版)__循环链表
- 数据结构与算法(C语言版)__双向链表
- 数据结构与算法(C语言版)__链式栈
- jupyter notebook远程访问
- xml grid viewer
- NOJ 1033 约瑟夫问题
- leetcode-103. Binary Tree Zigzag Level Order Traversal
- js序列化与反序列化
- 数据结构与算法(C语言版)__基数排序
- Java之于Javascript就好比Car(汽车)之于Carpet(地毯 )
- CentOS 6 安装Rabbitmq(Cluster)
- Android Next 公共组件库:Android-Next
- iOS开发如何跳转到系统设置或功能?
- NOJ 1018 选太子
- SpringMVC中使用Interceptor拦截器
- leetcode-104. Maximum Depth of Binary Tree
- f:Tree