Pagini recente » Cod sursa (job #2786927) | Cod sursa (job #2797814) | Cod sursa (job #1402938) | Cod sursa (job #2812939) | Cod sursa (job #498724)
Cod sursa(job #498724)
#include <cstdio>
#include<algorithm>
using namespace std;
int a[500000];
int c[500000];
void mergeSort( int a[], const int n ){
int p;
int i, j, li, lj,cc;
for ( p = 1; p < n; p <<= 1 ){
li = 0;
lj = 0;
while( lj + p < n ){
i = lj;
j = lj+p;
li=i+p;
lj=min(n,j+p);
cc = 0;
while ( i < li || j < lj )
c [ cc ++ ] = ( ( j == lj ) || ( i < li && a [ i ] < a [ j ] ) ) ? a [ i ++ ] : a [ j ++ ];
j = li - p - 1;
for ( i = lj - 1; i > j; -- i )
a [ i ] = c [ -- cc ];
}
}
}
int main(){
int i,n;
freopen( "algsort.in", "r", stdin );
freopen( "algsort.out", "w", stdout );
scanf( "%d", &n );
for( i = 0; i < n; i++ )
scanf( "%d", a+i );
mergeSort( a, n );
for( i = 0; i < n; i++ )
printf( "%d ", a[i] );
return 0;
}