Cod sursa(job #663090)

Utilizator SimeneSimene Robert Simene Data 17 ianuarie 2012 20:07:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <vector>
#define MAX 500001
using namespace std ;

void radixsort(int *a,int n)
{
		int i,b[MAX],m=0,exp=1;
		for(i=0;i<n;i++)
		{
			if(a[i]>m)
				m=a[i];
		}

		while(m/exp>0)
		{
			int bucket[10]={0};
			for(i=0;i<n;i++)
				bucket[a[i]/exp%10]++;
			for(i=1;i<10;i++)
				bucket[i]+=bucket[i-1];
			for(i=n-1;i>=0;i--)
				b[--bucket[a[i]/exp%10]]=a[i];
			for(i=0;i<n;i++)
				a[i]=b[i];
			exp*=10;
        }
	}


int main()
{
           int arr[500003];
           int i,n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);

    for(i=0;i<n;i++)
        scanf("%d",&arr[i]);
radixsort(&arr[0],n);
    for( i =0 ; i < n ; i++ )
        printf("%d ",arr[i]);


           return 0;
}