基数排序(基于C语言的实现)
2017-10-09 21:24
363 查看
基数排序(基于C语言的实现)
数组实例 9445,83,782,2
按照最末位,放在相应的桶中,得到
再把新得到的序列对下一位在进行相同的操作,循环4次(最大的数字只有4位)
数组实例 9445,83,782,2
按照最末位,放在相应的桶中,得到
0 0 0 0 0 0 0 0 782 2 0 0 83 0 0 0 0 0 0 0 9445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 782 2 83 9445
再把新得到的序列对下一位在进行相同的操作,循环4次(最大的数字只有4位)
#include <stdio.h> #include <stdlib.h> int max(int N[],int n) { int max = 0; for(int i=0; i<n; i++) { if (N[i]>max) max = N[i]; } return max; } //寻找数组中最大的元素 int main() { int N[5]= {9445,83,782,2}; int M[5]= {9445,83,782,2}; int n=4,num = max(N,n);//n是数组大小 int temp[10] ;//创建10个桶给每个数位 for(int j=0; num!=0; j++) //循环max位数次 { int index = 0; for(int i=0; i<10; i++) //初始化数组 for(int j=0; j<n; j++) temp[i][j]=0; int cot[10]= {0}; //cot[x]表示第X号桶中写到了第几位元素 for(int i=0; i<n; i++) //遍历数组 { temp[N[i]%10][cot[N[i]%10]] = M[i]; cot[N[i]%10]++; N[i]/=10; } // for(int i=0;i<10;i++) // { // for(int j=0;j<n;j++) // { // printf("%4d ",temp[i][j]); // } // printf("\n"); // } // 输出temp //将元素恢复到数列 for(int i=0; i<10; i++) { for(int k=0; k<n; k++) { if (temp[i][k]!=0) { M[index] = temp[i][k]; index++; } } } for(int i=0; i<index; i++) printf("%4d ",M[i]); printf("\n"); for(int i=0; i<index; i++) { N[i] = M[i]/10; for(int k=0; k<j; k++) N[i]/=10; printf("%4d ",N[i]); } printf("\n--------------\n"); num/=10; } for(int i=0; i<n; i++) printf("%d ",M[i]); return 0; }
相关文章推荐
- Java实现基于桶式排序思想和计数排序思想实现的基数排序
- 基于C语言实现shell指令的详解
- 编译Rob Hess基于OpenCV的SIFT算法的C语言实现
- 基于C语言的内存池的设计与实现
- 基于哈夫曼(haffuman)算法的文件压缩的实现(C语言)(转)
- Rob Hess的SIFT算法的C语言实现(基于OpenCV)
- 基于C语言的内存池的设计与实现
- 基于C语言的Socket网络编程搭建简易的Web服务器(socket实现的内部原理)
- 基于C语言的图书管理信息系统的设计与实现
- 网络编程:基于C语言的简易代理服务器实现(proxylab)
- 基于Easyx的文本显示器的C语言实现——源码+实验报告
- Rob Hess的SIFT算法的C语言实现(基于OpenCV)
- Rob Hess的SIFT算法的C语言实现(基于OpenCV)(调通!!!)
- C语言:基于OpenSSL-RSA实现RSA非对称加解密
- 基于C语言实现简单的走迷宫游戏
- C语言实现基数排序——针对数字的实现方法
- 基于Huffman树的文件压缩原理及C语言实现(二)
- 基于C语言的内存池的设计与实现
- 基于C语言与原始套接字实现Ping程序
- C语言基于GTK+Libvlc实现的简易视频播放器