Pagini recente » Cod sursa (job #280465) | Cod sursa (job #326903) | Cod sursa (job #1026160) | Cod sursa (job #2264884) | Cod sursa (job #2695606)
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int MAXN = 10000000;
const int MAX_BIT = 32;
const int BITS_STEP = 8;
const int BASE = ( 1 << BITS_STEP );
const int MASK = BASE - 1;
int v[ MAXN ], a[ MAXN ];
int freq[BASE];
int ind[BASE];
void radix_sort(int v2[], int aux[], int n, int bits){
if( bits == MAX_BIT )
return;
memset(freq, 0, sizeof(freq));
int i;
for( i = 0; i < n; i++ )
freq[v2[i] >> bits & MASK]++;
ind[0] = 0;
for( i = 1; i < BASE; i++ )
ind[i] = ind[i - 1] + freq[i - 1];
for( i = 0; i < n; i++ )
aux[ind[v2[i] >> bits & MASK]++] = v2[i];
radix_sort(aux, v2, n, bits + BITS_STEP );
}
int main()
{
int n, i;
long long x, b, c;
in>>n;
for( i = 0; i < n; i++ )
in>>v[i];
radix_sort(v, a, n, 0);
for( i = 0; i < n; i++ ){
out<<v[i]<<" ";
}
return 0;
}