#include <iostream> using namespace std; int maxbit(int *a,int n) { int d=1;//一位 int p=10;//十进制 for(int i=0;i<n;i++) { while(a[i]>=p) { p*=10; ++d; } } return d; } void Radixsort(int *a,int n) { int radix=1; int k; int d=maxbit(a,n); int *tmp=new int[n];//桶 int *count=new int[10];//计数器 for(int i=1;i<=d;i++) { for(int j=0;j<10;j++) { count[j]=0;//计数器每次都清零 } for(int j=0;j<n;j++) { k=(a[j]/radix)%10;//取余后的数字为尾数 count[k]++; } for(int j=1;j<10;j++) { count[j]=count[j-1]+count[j];//将tmp位置依次分给每个桶 } for(int j=n-1;j>=0;j--)//将桶中的数据收集到tmp { k=(a[j]/radix)%10; tmp[count[k]-1]=a[j]; count[k]--; } for(int j=0;j<n;j++) { a[j]=tmp[j]; } radix=radix*10; } delete[]tmp; delete[]count; } int main() { int n=5; int a[10]; cout<<"Inpu Num"<<endl; for(int i=0;i<n;i++) { cin>>a[i]; } Radixsort(a,n); for(int j=0;j<n;j++) { cout<<a[j]<<" "; } return 0; }