Cod sursa(job #661599)

Utilizator danieladDianu Daniela danielad Data 14 ianuarie 2012 19:08:26
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream>
#include<fstream>
#include<vector>
#define nmax 50001
using namespace std;
vector <vector <int> > buckets;
int v[nmax],n,length=0;
ifstream f("algsort.in");
ofstream g("algsort.out");
void radixsort(){
	int x,nr=0,p=1;
	for(int i=0;i<length;i++){
		for(int j=0;j<n;j++){
			x=(v[j]/p)%10;
			buckets[x].push_back(v[j]);
		}
		for(int j=0;j<10;j++){
			for(int k=0;k<buckets[j].size();k++){
				v[nr]=buckets[j][k];
				nr++;
			}
			buckets[j].clear();
		}
		nr=0;
		p=p*10;
	}
	buckets.clear();
}
int main(){
	f>>n;
	buckets.resize(10);
	int max=-1;
	for(int i=0;i<n;i++){
		f>>v[i];
		if(v[i]>max)
			max=v[i];
	}
	while(max>0){
		length++;
		max=max/10;
	}
	radixsort();
	for(int i=0;i<n;i++)
		g<<v[i]<<" ";
	f.close();
	g.close();
	return 0;
}