#include<iostream>
using namespace std;
const int MAXN = 1000;
#ifndef _RadixSort_
#define _RadixSort_
int n,a[MAXN],b[MAXN],cnt[10];
void RadixSort(int a[],int n)
{
int val=1,maxLength=0;
for(int i=0;n-i>0;i++) while(a[i]>=val) val*=10,maxLength++;
for(int radix=1;maxLength--;radix*=10)
{
memset(cnt,0,sizeof(cnt));
for(int i=n-1;i>=0;i--) cnt[(a[i]/radix)%10]++;
for(int i=1;10-i>0;i++) cnt[i]+=cnt[i-1];
for(int i=n-1;i>=0;i--) b[--cnt[(a[i]/radix)%10]]=a[i];
for(int i=n-1;i>=0;i--) a[i]=b[i];
}
}
#endif
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=0;n-i>0;i++) scanf("%d",&a[i]);
RadixSort(a,n);
for(int i=0;n-i>0;i++) cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
基数排序
最新推荐文章于 2025-01-20 22:27:40 发布