Cod sursa(job #659123)

Utilizator bogdanrnRadu Bogdan Nicolae bogdanrn Data 10 ianuarie 2012 03:36:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <fstream>
#include <stdlib.h>
#define MAX 500000
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[MAX];
           int i,n;
           ifstream f("algsort.in");
		   ofstream g("algsort.out");
		   f>>n;
           for(i=0;i<n;i++)
				f>>arr[i];
           radixsort(&arr[0],n);
           for(i=0;i<n;i++)
				g<<arr[i]<<" ";
           return 0;
}