Pagini recente » Cod sursa (job #2291220) | Cod sursa (job #2907307) | Cod sursa (job #916809) | Cod sursa (job #1861741) | Cod sursa (job #330752)
Cod sursa(job #330752)
#include<stdio.h>
#include<string.h>
#define N_MAX 500005
int a[N_MAX],b[N_MAX];
void rad(int *a,int *b,int byte,int n)
{ int i,count[1024],ind[1024];
memset(count,0,sizeof(count));
for(i=1;i<=n;++i) ++count[(a[i]>>byte)&1023];
ind[0]=1;
for(i=1;i<1024;++i) ind[i]=ind[i-1]+count[i-1];
for(i=1;i<=n;++i) b[ind[(a[i]>>byte)&1023]++]=a[i];
}
void radix(int *a,int n)
{ rad(a,b,0,n);
rad(b,a,10,n);
rad(a,b,20,n);
}
int i,n;
int main()
{ freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i) scanf("%d",&a[i]);
radix(a,n);
for(i=1;i<=n;++i) printf("%d ",b[i]);
fclose(stdin);
fclose(stdout);
return 0;
}