Cod sursa(job #1151981)

Utilizator XeBluePodaru Mihai XeBlue Data 24 martie 2014 14:54:37
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int v[500000], n;
void radix();

int main()
{
    in >> n;
    for(int i=0;i<n;i++)
        in >> v[i];
    radix();

    for(int i=0;i<n;i++)
        out << v[i] << " ";

    in.close();
    out.close();
    return 0;
}

void radix()
{
    int bucket[10][500000], buck[10], p=1, num=0, large=v[0];

    for(int i=1;i<n;i++)
    {
        if(v[i]>large)
            large=v[i];
        while(large)
        {
            num++;
            large/=10;
        }
    }
    for(int pas=0;pas<num;pas++)
    {
        for(int k=0;k<10;k++)
            buck[k]=0;
        for(int i=0;i<n;i++)
        {
            int l=(v[i]/p)%10;
            bucket[l][buck[l]++]=v[i];
        }
        int i=0;
        for(int k=0;k<10;k++)
            for(int j=0;j<buck[k];j++)
                v[i++]=bucket[k][j];
        p*=10;
    }
}