Cod sursa(job #2383178)

Utilizator mihneazarojanuMihnea Bogdan Zarojanu mihneazarojanu Data 19 martie 2019 09:56:18
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NC=10, B=10, VM=500000;

int n, v[VM], aux[VM], nr[NC], poz[NC];

void bucketsort(){
    int p=1;
    for(int i=0; i<NC; i++){
        for(int j=0; j<B; j++){
            nr[j]=0;//cate au pe poz curenta cifra j
        }
        for(int k=0; k<n; k++){
            int cif=v[k]/p%B;
            nr[cif]++;
        }
        for(int j=0; j<B; j++){
            nr[j]+=nr[j-1];//cate au pe poz curenta cifra mai mica <= j
            poz[j]=nr[j-1];
        }
        for(int k=0; k<n; k++){
            int cif=v[k]/p%B;
            aux[poz[cif]++]=v[k];
        }
        for(int k=0; k<n; k++){
            v[k]=aux[k];
        }
        p*=B;
    }
}

int main()
{
    in>>n;
    for(int i=0; i<n; i++){
        in>>v[i];
    }
    bucketsort();
    for(int i=0; i<n; i++){
        out<<v[i]<<" ";
    }
    return 0;
}