Cod sursa(job #661729)

Utilizator blk.irineluIrina Ursateanu blk.irinelu Data 14 ianuarie 2012 23:47:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int maxn=500001;
vector <vector <int> > bucket;
int a[maxn],n,nrcifre;

void begin()
{
    f>>n;
    int max=0;
    for(int i=1;i<=n;i++)
    {
        f>>a[i];
        if(a[i]>max) max=a[i];
    }
    while(max)
    {
        nrcifre++;
        max/=10;
    }
}

void radixsort()
{
    int aux,p,q=1;
    for(int i=1;i<=nrcifre;i++)
    {
        p=1;
        for(int j=1;j<=n;j++)
        {
            aux=a[j]/q%10;
            bucket[aux].push_back(a[j]);
        }
        for(int k=0;k<10;k++)
        {
            for(int j=0;j<bucket[k].size();j++)
            {
              a[p]=bucket[k][j];
              p++;
            }
          bucket[k].clear();
        }
        q*=10;
    }
    bucket.clear();
}

void print ()
{
    for(int i=1;i<=n;i++)
     g<<a[i]<<" ";
}
int main()
{
    bucket.resize(10);
    begin();
    radixsort();
    print();
    return 0;
}