Pagini recente » Borderou de evaluare (job #535638) | Borderou de evaluare (job #3219708) | Borderou de evaluare (job #293260) | Borderou de evaluare (job #88559) | Cod sursa (job #479217)
Cod sursa(job #479217)
#include <cstdio>
#include <string> // pentru functia memset
#include <cstdlib>
#include <ctime>
#include<stdio.h>
#define N 5000005
int a[N],b[N], n;
inline void rad(int n, int byte, int a[], int b[])
{
int count[256], index[256],i;
for(i=1;i<=n;++i) ++count[(a[i]>>byte)&255];
index[0]=1;
for(i=1;i<256;++i) index[i]=index[i-1]+count[i-1];
for(i=1;i<=n;++i) b[index[(a[i]>>byte)&255]++]=a[i];
}
void radixsort(int n,int a[])
{
rad(n, 0, a, b);
rad(n, 8, b, a);
rad(n, 16, a, b);
rad(n, 24, b, a);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
radixsort(n, a);
for(i=1;i<=n;i++)
printf("%d ",&a[i]);
return 0;
}