Pagini recente » Cod sursa (job #3139437) | Cod sursa (job #2454268) | Cod sursa (job #318734) | Cod sursa (job #3126000) | Cod sursa (job #2700651)
#include <bits/stdc++.h>
#define maxBits 32
#define bitsPerStep 8
#define BASE (1 << bitsPerStep)
#define NMAX 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int mask = BASE - 1;
int v[NMAX], aux[NMAX], fr[NMAX], ind[NMAX];
void radixSort(int v[], int a[], int n, int bits)
{
if(bits == maxBits)
return;
for(int i = 0; i < BASE; i++)
fr[i] = 0;
for(int i = 0; i < n; i++)
fr[v[i] >> bits & mask]++;
ind[0] = 0;
for(int i = 1; i < BASE; i++)
ind[i] = ind[i - 1] + fr[i - 1];
for(int i = 0; i < n ; i++)
a[ind[v[i] >> bits & mask]++] = v[i];
radixSort(a, v, n, bits + bitsPerStep);
}
int main()
{
int n;
f >> n;
for(int i = 0; i < n; i++)
f >> v[i];
radixSort(v, aux, n, 0);
for(int i = 0; i < n; i++)
g << v[i] << " ";
return 0;
}