Pagini recente » Cod sursa (job #256243) | Cod sursa (job #2309649) | Cod sursa (job #2490703) | Cod sursa (job #1546523) | Cod sursa (job #2677325)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int MAXN = 500000;
const int NO_VALUES = 1 << 31;
const int NO_BUKETS = 1 << 16;
const int VALUES_BUKET = 1 << 15;
const int VALUES_BITS = 15;
int v[MAXN], a[MAXN];
int ind[NO_BUKETS], freq[NO_BUKETS];
int getBuketNum( int val ){
return val >> VALUES_BITS;
}
int main()
{
int n, i;
in>>n;
for( i = 0; i < n; i++ )
in>>v[i];
for( i = 0; i < n; i++ )
freq[getBuketNum(v[i])]++;
for( i = 1; i < NO_BUKETS ; i++ )
ind[i] = ind[ i - 1 ] + freq[i - 1];
for( i = 0; i < n; i++ )
a[ind[getBuketNum(v[i])]++] = v[i];
sort(a, a + freq[0]);
for( i = 1; i < NO_BUKETS; i++ ){
freq[i] += freq[i - 1];
sort(a + freq[i - 1], a + freq[i]);
}
for( i = 0; i < n; i++ )
out<<a[i]<<" ";
return 0;
}