Pagini recente » Cod sursa (job #1892239) | Cod sursa (job #2562404) | Cod sursa (job #2344585) | Cod sursa (job #870228) | Cod sursa (job #1012962)
#include <cstdio>
#include <cassert>
#include <vector>
using namespace std;
#define MAX_N 500000
int n, v[MAX_N];
void read( FILE *fin ) {
assert( fscanf( fin, "%d", &n ) == 1 );
for ( int i = 0; i < n; ++i )
assert( fscanf( fin, "%d", &v[i] ) == 1 );
}
void write( FILE *fout ) {
for ( int i = 0; i < n; ++i )
fprintf( fout, "%d ", v[i] );
}
void swap( int &a, int &b ) {
int aux = a;
a = b;
b = aux;
}
void radix_sort( int power10 ) {
if ( power10 < 0 )
return;
vector < int > a[10];
for ( int i = 0; i < n; ++i )
a[ v[i] / power10 % 10 ].push_back( v[i] );
int curr_pos = 0;
for ( int i = 0; i < 10; ++i )
for ( vector < int > :: iterator it = a[i].begin(); it != a[i].end(); ++it ) {
v[curr_pos] = *it;
++curr_pos;
}
radix_sort( power10 * 10 );
}
int main() {
FILE *fin, *fout;
fin = fopen( "algsort.in", "r" );
read( fin );
fclose( fin );
radix_sort( 1 );
fout = fopen( "algsort.out", "w" );
write( fout );
fclose( fout );
}