Pagini recente » Cod sursa (job #1871794) | Cod sursa (job #1793162) | Cod sursa (job #2530547) | Cod sursa (job #1980977) | Cod sursa (job #584412)
Cod sursa(job #584412)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void radix (int byte, long N, long *source, long *dest)
{
int i;
long count[256];
long index[256];
memset (count, 0, sizeof (count));
for ( int i=0; i<N; i++ ) count[((source[i])>>(byte*8))&0xff]++;
index[0]=0;
for ( i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];
for ( i=0; i<N; i++ ) dest[index[((source[i])>>(byte*8))&0xff]++] = source[i];
}
void radixsort (long *source, long *temp, long N)
{
radix (0, N, source, temp);
radix (1, N, temp, source);
radix (2, N, source, temp);
radix (3, N, temp, source);
}
long data[500003];
long temp[500003];
int main (void)
{
int n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&data[i]);
radixsort (data, temp, n);
for ( int i=0; i<n; i++ ) printf("%d ",data[i]);
return 0;
}