Pagini recente » Cod sursa (job #1458950) | Cod sursa (job #1176088) | Cod sursa (job #14427) | Cod sursa (job #901065) | Cod sursa (job #2694284)
#include <stdio.h>
#include <vector>
#define MAX_BITS 32
#define BITS_PER_STEP 4
const int BASE = 1 << BITS_PER_STEP;
std::vector<int> bucket[ BASE ];
const int MASK = BASE - 1;
int v[ 10000000 ];
void radixsort( int v[], int n, int bits ){
if( bits == MAX_BITS )
return;
int i, l;
unsigned int c;
for( i = 0; i < n; i++ )
bucket[ v[ i ] >> bits & MASK ].push_back( v[ i ] );
i = 0;
for( l = 0; l < BASE; l++ ){
for( c = 0; c < bucket[ l ].size(); c++ )
v[ i++ ] = bucket[ l ][ c ];
bucket[ l ].clear();
}
radixsort( v, n, bits + BITS_PER_STEP );
}
int main()
{
int n, A, B, C;
FILE *fin = fopen( "radixsort.in", "r" );
fscanf( fin, "%d %d %d %d", &n, &A, &B, &C );
fclose( fin );
v[ 0 ] = B;
for( int i = 1; i < n; i++ )
v[ i ] = ( A * v[ i - 1 ] + B ) % C;
radixsort( v, n, 0 );
FILE *fout = fopen( "radixsort.out", "w" );
for( int i = 0; i < n; i += 10 )
fprintf( fout, "%d ", v[ i ] );
fclose( fout );
return 0;
}