Pagini recente » Cod sursa (job #2901078) | Cod sursa (job #584507) | album2 | Cod sursa (job #3204149) | Cod sursa (job #1837791)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 500005;
const int SQRT = 1 << 16;
int n, c;
int fi[2 * SQRT + 1];
int v[NMAX];
int nxt[NMAX];
void bucketSort() {
memset(fi, -1, sizeof fi);
for (int i = 1; i <= n; i++) {
f >> v[i];
int j = v[i] % SQRT;
nxt[i] = fi[j];
fi[j] = i;
}
for (int i = SQRT - 1; i >= 0; i--) {
int j = fi[i];
while (j != -1) {
int _nxt = nxt[j];
int k = v[j] / SQRT + SQRT;
nxt[j] = fi[k];
fi[k] = j;
j = _nxt;
}
}
for (int i = SQRT; i <= 2 * SQRT; i++) {
for (int j = fi[i]; j != -1; j = nxt[j]) {
g << v[j] << " ";
}
}
}
int main() {
f >> n;
bucketSort();
return 0;
}