Pagini recente » Cod sursa (job #1288498) | Cod sursa (job #106489) | Cod sursa (job #3194314) | Cod sursa (job #2140540) | Cod sursa (job #371373)
Cod sursa(job #371373)
#include <stdio.h>
#define M 257
#define N 500000
int sir[N],count[M],sir2[N];
int main ()
{freopen("algsort.in","r",stdin);
int i,n,m,j,h,t,k;
m=16;
scanf("%d",&n);
for (i=0;i<n;i++)
{scanf("%d",&sir[i]);
}
for (k=0;k<8;k++)
{for (j=0;j<m;j++)count[j]=0;
for (i=0;i<n;i++)count[(sir[i]/(1<<(4*k)))%m]++;
for (i=1;i<m;i++)count[i]+=count[i-1];
for (i=n-1;i>=0;i--)
{sir2[(count[(sir[i]/(1<<(4*k)))%m]--)-1]=sir[i];
}
for (i=0;i<n;i++)
{sir[i]=sir2[i];
}
}
freopen("algsort.out","w",stdout);
for (i=0;i<n;i++)
{printf("%d ",sir[i]);
}
return 0;
}