Cod sursa(job #3030985)

Utilizator TirilaPatricTirila Patric-Gabriel TirilaPatric Data 18 martie 2023 10:22:53
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> sortare(vector<int> V){
    int nBins = 1;
    for(int i=0; i<16; i++){
        nBins*=2;
    }

    vector<vector<int>> bins(nBins);
    long i = 0;
    int n;
    int ok = 1;
    while(ok){
        ok = 0;
        for(int j=0; j<nBins; j++){
            bins[j] = {};
        }
        for(int j=0; j<V.size(); j++){
            if ((V[j]>>i) > nBins-1) {
                ok = 1;
            }
            n = (V[j]>>i) % nBins;
            bins[n].push_back(V[j]);
        }
        V.clear();

        for(int j=0; j<bins.size(); j++){
            for(int k=0; k<bins[j].size(); k++){
                V.push_back(bins[j][k]);
            }
        }
        i+=16;
    }
    return V;
}

int main(){
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    vector<int> V;
    int a, N;
    f>>N;
    while(N>0){
        f>>a;
        V.push_back(a);
        N--;
    }
    V = sortare(V);
    for(long unsigned int i=0; i<V.size(); i++){
        g<<V[i]<<" ";
    }
    return 0;
}