Pagini recente » Cod sursa (job #3226849) | Cod sursa (job #3142190) | Cod sursa (job #2771798) | Cod sursa (job #2182773) | Cod sursa (job #2199204)
#include <iostream>
#include <cstring>
using namespace std;
const int nmax = 1<<19;
const int dim = 8;
int n,i,v[nmax],aux[nmax],ap[1<<dim];
void radixsort(int p)
{
memset(ap , 0 , sizeof(ap));
int i,mask = (1 << dim) - 1;
for (i = 1; i <= n; ++i) ap[(v[i] >> p) & mask]++;
for (i = 1; i <= mask; ++i) ap[i] += ap[i-1];
for (i = mask; i ; --i) ap[i] = ap[i-1];
ap[0] = 0;
for (i = 1; i <= n; ++i) aux[++ap[(v[i] >> p) & mask]] = v[i];
for (i = 1; i <= n; ++i) v[i] = aux[i];
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i) cin>>v[i];
for(int i=0;i<32;i+=dim) radixsort(i);
for(int i=1;i<=n;++i) cout<<v[i]<<' ';
return 0;
}