Pagini recente » Cod sursa (job #2817284) | Cod sursa (job #316546) | Cod sursa (job #2536542) | Cod sursa (job #2131765) | Cod sursa (job #3030982)
#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;
}