/* 据说这玩意快.....不过实测的情况QAQ 数比较小的时候还可以 优于桶排 数大的时候 10^5 就没他什么事了 似乎用处并不是很大 */ #include<cstdio> #include<ctime> #include<algorithm> #define maxn 100000010 using namespace std; int n,a[maxn],c[maxn],b[maxn]; int init(){ int x=0,f=1;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} return x*f; } int Get(){ int r=1; for(int i=1;i<=n;i++) while(a[i]>r)r*=10; return r; } void Jsort(){ int mx=Get(),x=1; for(int k=1;k<=mx;k*=10){ for(int i=0;i<=9;i++)c[i]=0; for(int i=1;i<=n;i++){ int y=a[i]/x%10;c[y]++; } for(int i=0;i<=9;i++) c[i]=c[i-1]+c[i]; for(int i=n;i>=1;i--){ int y=a[i]/x%10; b[c[y]]=a[i];c[y]--; } for(int i=1;i<=n;i++) a[i]=b[i]; x*=10; } } int main() { n=init(); for(int i=1;i<=n;i++) a[i]=init(); Jsort();//sort(a+1,a+1+n); for(int i=1;i<=n;i++) printf("%d ",a[i]); return 0; }