#include #include using namespace std; int a[10010]; int maxbit(int data[], int n) //辅助函数,求数据的最大位数 { int d=1;//统计最大的位数 int p=10; for(int i=0;i=p) { p*=10; ++d; } } return d; } void RadixSort(int data[], int n) //基数排序 { int d=maxbit(data,n); //求最大位数 int *tmp=new int[n]; //辅助数组 int *count=new int[10]; //计数器 int i,j,k; int radix=1; for(i=1;i<=d;i++) //进行d次排序 { for(j=0;j<10;j++) count[j]=0; //每次分配前清空计数器 for(j=0;j=0;j--) //将所有桶中记录依次收集到tmp中 { k=(data[j]/radix)%10; tmp[--count[k]]=data[j]; } for(j=0;j