简单的用数组实现的基数排序
#include<stdio.h> #include<stdlib.h> struct tong{ int cunchu[10]; int youbiao; }; void jisuh(int *head,int max){ int i=0,k,j,zhong,jian,b10=1,m; struct tong shuzu[10]; for(m=0;m<3;m++){//3趟排序 j=0;b10*=10; for(i=0;i<10;i++) { shuzu[i].youbiao=0; }//初始化 for(j=0;j<max;j++)//每趟的处理 ,放进去 { zhong=(head[j]%b10-head[j]%(b10/10) )/(b10/10); shuzu[zhong].cunchu[shuzu[zhong].youbiao]=head[j]; shuzu[zhong].youbiao++; } k=0; for(i=0;i<10;i++) { for(j=0;j<shuzu[i].youbiao;j++) { head[k]=shuzu[i].cunchu[j]; k++; } } }} int main(void){ int a[]={9,2,43,245,134,344,32}; jisuh(a,7); int i; for(i=0;i<7;i++) { printf("%d ",a[i]); } }