Pagini recente » Cod sursa (job #3040670) | Cod sursa (job #851997) | Cod sursa (job #1533942) | Cod sursa (job #12388) | Cod sursa (job #1714621)
///Nrx imi va datora un suc
#include <bits/stdc++.h>
using namespace std;
const int BYTE = 256;
const int NMAX = 500005;
queue<int> q[BYTE];
int v[NMAX];
int mask(int arg, int step) {
return (arg>>8*step) & (BYTE-1);
}
void xsort(int *a, int *b) {
int len = b - a;
for(int i=0; i<4; ++i) {
for(int j=0; j<len; ++j)
q[mask(a[j], i)].push(a[j]);
for(int j=0, buff=0; j<BYTE; ++j) {
while(!q[j].empty()) {
a[buff++] = q[j].front();
q[j].pop();
}
}
}
}
int main(void) {
FILE *fi = fopen("algsort.in", "r");
FILE *fo = fopen("algsort.out", "w");
int n;
fscanf(fi,"%d",&n);
for(int i=0; i<n; ++i)
fscanf(fi,"%d",&v[i]);
xsort(v, v+n);
for(int i=0; i<n; ++i)
fprintf(fo,"%d ",v[i]);
fprintf(fo,"\n");
fclose(fi);
fclose(fo);
return 0;
}