Pagini recente » Cod sursa (job #1911106) | Cod sursa (job #2910217) | Cod sursa (job #2468674) | Cod sursa (job #2707284) | Cod sursa (job #2677795)
#include <bits/stdc++.h>
using namespace std;
#define x1 "algsort.in"
#define x2 "algsort.out"
ifstream in(x1);
ofstream out(x2);
#define MAX_N 500000
#define VALUES (1 << 31)
#define BUCKETS (1 << 16)
#define BUCKET (1 << 15)
#define BITI 15
int v1[MAX_N], v2[MAX_N], f[BUCKETS], v3[BUCKETS];
inline int BucketNr(int value) {
return value >> BITI;
}
int main() {
int n, i;
in >> n;
for(i = 0; i < n; i++)
in >> v1[i];
for (i = 0; i < n; ++i)
++f[BucketNr(v1[i])];
for (i = 1; i < BUCKETS; i++)
v3[i] = v3[i - 1] + f[i - 1];
for (i = 0; i < n; ++i)
v2[v3[BucketNr(v1[i])]++] = v1[i];
sort(v2, v2 + f[0]);
for (i = 1; i < BUCKETS; i++) {
f[i] += f[i - 1];
sort(v2 + f[i - 1], v2 + f[i]);
}
for(i = 0; i < n; i++)
out << v2[i] << " ";
return 0;
}