Pagini recente » Cod sursa (job #1697772) | Cod sursa (job #2786569) | Cod sursa (job #2118431) | Cod sursa (job #616106) | Cod sursa (job #2677869)
// Mihai Priboi
#include <bits/stdc++.h>
#define MAX_N 500000
int v[MAX_N];
void sort( int v[], int st, int dr, int bit ) {
if( st >= dr || bit == -1 )
return;
int i, j;
j = st;
for( i = st; i <= dr; i++ ) {
if( (v[i] & (1 << bit)) == 0 ) {
std::swap(v[i], v[j]);
j++;
}
}
sort(v, st, j - 1, bit - 1);
sort(v, j, dr, bit - 1);
}
int main() {
FILE *fin, *fout;
int n, i;
fin = fopen( "algsort.in", "r" );
fscanf( fin, "%d", &n );
for( i = 0; i < n; i++ )
fscanf( fin, "%d", &v[i] );
fclose( fin );
sort(v, 0, n - 1, 30);
fout = fopen( "algsort.out", "w" );
for( i = 0; i < n; i++ )
fprintf( fout, "%d ", v[i] );
fclose( fout );
return 0;
}