Cod sursa(job #443379)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 16 aprilie 2010 20:43:40
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <algorithm>
#include <fstream>

using namespace std;

const char Input[] = "algsort.in";
const char Output[] = "algsort.out";

const int Baz = 10;
const int Dim = 500000;
const int Max = 10;

int N, A[Dim];
int buckets[Max][Dim];

void radix_sort() {

    int i, j, k, cnt, pow, index;

    for( i = 0, pow = 1; i < Baz; ++i, pow *= 10 ) {

        for( j = 0; j < N; ++j ) {

            index = (A[j] / pow) % 10;
            buckets[index][++buckets[index][0]] = A[j];
        }

        for( j = cnt = 0; j < Max; ++j )
            for( k = 0; k < buckets[j][0]; ++k )
                A[cnt++] = buckets[j][k + 1];
    }
}

int main() {

    ifstream fin( Input );
    ofstream fout( Output );

    int i;

    fin >> N;
    for( i = 0; i < N; ++i )
        fin >> A[i];

    radix_sort();

    for( int i = 0; i < N; ++i )
        fout << A[i] << " ";

    fin.close();
    fout.close();

    return 0;
}