Cod sursa(job #592269)

Utilizator stef93Stefan Gilca stef93 Data 27 mai 2011 15:26:48
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <math.h>
using namespace std;
ofstream out("algsort.out");
void printSorted(int x[], int length);

vector < vector <int> > buckets;

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;
    }
    buckets.clear();
    printSorted(x,length);
}
void printSorted(int x[], int length){
    for(int i=0;i<length;i++)
        out<<x[i]<<' ';
}

int main(){
    ifstream in("algsort.in");
    int testcases;
    in>>testcases;
    int input[testcases];
    buckets.resize(10);
    int number;
    for(int i=0;i<testcases;i++){
        in>>number;
        input[i]=number;
    }
    radixSort(input,testcases);
   // system("pause");
    return 0;
}