Pagini recente » Cod sursa (job #2815090) | Cod sursa (job #1833714) | Cod sursa (job #1617745) | Cod sursa (job #1353079) | Cod sursa (job #371374)
Cod sursa(job #371374)
#include <stdio.h>
#define M 65537
#define N 500001
int sir[N],count[M],sir2[N];
int main ()
{freopen("algsort.in","r",stdin);
int i,n,m,j,h,t,k;
m=65536;
scanf("%d",&n);
for (i=0;i<n;i++)
{scanf("%d",&sir[i]);
}
for (k=0;k<2;k++)
{for (j=0;j<m;j++)count[j]=0;
for (i=0;i<n;i++)count[(sir[i]/(1<<(16*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<<(16*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;
}