Pagini recente » Cod sursa (job #927123) | Cod sursa (job #366016) | Cod sursa (job #2878228) | Cod sursa (job #2188098) | Cod sursa (job #514175)
Cod sursa(job #514175)
# include <cstdio>
# include <cstring>
# include <algorithm>
const int MAX = 500001 ;
int N ;
int A[MAX], B[MAX] ;
inline void rad ( int N, int byte, int *A, int *B ) {
int cnt[256], C[256] = { 1 } ;
memset ( cnt, 0, sizeof cnt ) ;
for ( int i = 1; i <= N; ++i )
++cnt[ A[i] >> byte & 255 ] ;
for ( int i = 1; i < 256; ++i )
C[i] = C[i - 1] + cnt[i - 1] ;
for ( int i = 1; i <= N; ++i )
B[ C[ A[i] >> byte & 255 ]++ ] = A[i] ;
}
inline void radix ( int *A, int N ) {
rad ( N, 0, A, B ) ;
rad ( N, 8, B, A ) ;
rad ( N, 16, A, B ) ;
rad ( N, 24, B, A ) ;
}
int main ( void ) {
freopen ( "algsort.in", "r", stdin ) ;
freopen ( "algsort.out", "w", stdout ) ;
scanf ( "%d", &N ) ;
for ( int i = 1; i <= N; ++i )
scanf ( "%d", A + i ) ;
radix ( A, N ) ;
for ( int i = 1; i <= N; ++i )
printf ( "%d ", A[i] ) ;
}