Cod sursa(job #659128)

Utilizator sternvladStern Vlad sternvlad Data 10 ianuarie 2012 05:45:03
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;
const int MAX=100000;

ifstream in ("algsort.in");
ofstream out ("algsort.out");


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 i,n,v[MAX];
           in>>n;
           for(i=0;i<n;i++)
				in>>v[i];
           radixsort(&v[0],n);
           for(i=0;i<n;i++)
				out<<v[i]<<" ";
           return 0;
}