reference: 基数排序 http://blog.csdn.net/hitwhylz/article/details/9970451
八大排序 https://www.cnblogs.com/RainyBear/p/5258483.html
基数排序radixSort: 用桶bucket进行 分配、收集。
桶:0-9十个桶
分配:从个位开始,将数据分配到0-9桶中
收集:依次将0-9桶中的数据收集到原数组中
【(C语言)八大排序之(基数排序)】时间复杂度:O(d(r+n))空间复杂度:O(rd+n)。
其中,n为关键字的个数、d为关键字最大的长度、r为关键字的基数即桶的数量
基数排序的空间复杂度较高,有两个数组的空间开销:一个存放待排序数组,一个就是所谓的桶
文章图片
1 #include
2 #include
3
4 void radixSort(int a[], int len);
5 void display(int a[], int len);
6
7 int main(void)
8 {
9int a[] = {8,4,2,3,5,1,6,9,0,7};
10int len = sizeof(a)/sizeof(a[0]);
11radixSort(a, len);
12
13display(a, len);
14return 0;
15 }
16 // 数组中最大数的位数
17 int maxlength(int a[], int len)
18 {
19int bits = 1, p = 10, i;
20for(i=0;
i=p)
23{
24p = p * 10;
25bits++;
26}
27}
28return bits;
29 }
30
31 // 数据num的第pos位的数字,pos=1为个位
32 int getdigit(int num, int pos)
33 {
34int temp = 1, i;
35for(i=0;
i
推荐阅读
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- C/C++|C/C++ basis 02
- Qt实战|Qt+OpenCV联合开发(二十一)--图像翻转与旋转
- Qt实战|Qt+OpenCV联合开发(十四)--图像感兴趣区域(ROI)的提取
- Qt实战|Qt+OpenCV联合开发(十三)--通道分离与合并
- opencv|Qt+OpenCV联合开发(十六)--图像几何形状绘制
- Qt实战|Qt+OpenCV联合开发(十七)--随机数与随机颜色
- SNAT的MASQUERADE地址选择与端口选择
- IPTABLES的连接跟踪与NAT分析
- IPVS分析