Cod sursa(job #580607)

Utilizator SadmannCornigeanu Calin Sadmann Data 13 aprilie 2011 11:54:59
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
int n,x;
int v[500001];
vector < vector <int> > buckets(10);


void radixSort(int x[],int length){
    int temp;
    int m=0;
    //Begin Radix Sort
    for(int i=0;i<7;i++){
        //Determine which bucket each element should enter
        for(int j=0;j<length;j++){
                temp=(int)((x[j])/pow(10,i))%10;
                buckets[temp].push_back((x[j]));
        }
        //Transfer results of buckets back into main array
        for(int k=0;k<10;k++){
                for(int l=0;l<buckets[k].size();l++){
                x[m]=buckets[k][l];
                        m++;
                }
                //Clear previous bucket
                buckets[k].clear();
        }
        m=0;
    }
}

int main()
{
	ifstream in("algsort.in");
	ofstream out("algsort.out");
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>v[i];
	}
	radixSort(v+1,n);
    for(int i=1;i<=n;i++)
        out<<v[i]<<" ";


	return 0;
}