Cod sursa(job #479219)

Utilizator probaproba proba proba Data 23 august 2010 13:05:52
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#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;
}