Pagini recente » Cod sursa (job #1156057) | Cod sursa (job #1770106) | Clasament teme_acmunibuc_2014_2 | Cod sursa (job #891063) | Cod sursa (job #2550145)
#include <bits/stdc++.h>
using namespace std;
vector <int> radixSort(vector <int> a, int n, int dim = 256 * 256 * 256 * 16){
vector <int> buckets[20];
for (int i=0; i<n; i++){
buckets[(a[i] / dim) % 16].push_back(a[i]);
}
for (int i=0; i<10; i++){
if (buckets[i].size() < 2 || dim == 1) continue;
buckets[i] = radixSort(buckets[i], buckets[i].size(), dim / 16);
}
int idx = 0;
for (int i=0; i<17; i++){
for (auto it: buckets[i]) a[idx++] = it;
}
return a;
}
int main(){
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
int n;
vector <int> a;
cin >> n;
for (int i=1, x; i<=n; i++) cin >> x, a.push_back(x);
a = radixSort(a, a.size());
for (auto it: a) cout << it << ' ';
return 0;
}