Cod sursa(job #1105273)

Utilizator MetallicFocusZulean Tiberiu MetallicFocus Data 11 februarie 2014 17:47:14
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
using namespace std;

int v[100], n;

void radixSort() {
    int bucket[10][20], buck_count[10], b[10];
    int r,no_of_passes=0,divisor=1,largest;
    largest=v[0];
    for(int i=1;i<n;i++)  
    {   if(v[i] > largest)
        largest=v[i];  }
    while(largest > 0)  
    {   no_of_passes++;
        largest /= 10; }
    for(int pass_no=0; pass_no < no_of_passes; pass_no++) {
        for(int k=0; k<10; k++)
            buck_count[k]=0;
			for(int i=0;i<n;i++){
            r=(v[i]/divisor) % 10;
            bucket[r][buck_count[r]++]=v[i]; }
        int i=0;
		for(int k=0; k<10; k++){
            for(int j=0; j<buck_count[k]; j++)
                v[i++] = bucket[k][j];  }
        divisor*=10;
    }
}

int main()
{   ifstream in("radixsort.in");
    ofstream out("radixsort.out");
    in>>n;
	for(int i=0; i<n; i++)
	  in>>v[i];
	radixSort();
	for(int i=0; i<n; i++)
	  out<<v[i]<<" ";
	in.close();
	out.close();
	return 0;
}