(C语言)八大排序之(基数排序)

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为关键字的基数即桶的数量
基数排序的空间复杂度较高,有两个数组的空间开销:一个存放待排序数组,一个就是所谓的桶
(C语言)八大排序之(基数排序)
文章图片


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


    推荐阅读