Pagini recente » Cod sursa (job #1166872) | Cod sursa (job #426183) | Cod sursa (job #528946) | Cod sursa (job #881145) | Cod sursa (job #2279479)
#include <iostream>
#include <cstdio>
using namespace std;
#define NMAX 500001
int V[ NMAX ];
int A[ NMAX ];
void merge_sort( int st, int dr ){
if ( st >= dr ) return ;
int mid = ( st + dr ) / 2;
int i, j, k = st;
i = st; j = mid + 1;
merge_sort( st, mid );
merge_sort( mid + 1, dr );
while ( ( i <= mid ) || ( j <= dr ) ) {
if ( ( j > dr ) || ( i <= mid && V[ i ] < V[ j ] ) ) A[ k++ ] = V[ i++ ];
else A[ k++ ] = V[ j++ ];
}
for ( i = st; i <= dr; ++i )
V[ i ] = A[ i ];
}
int main () {
freopen( "algsort.in", "r", stdin );
freopen( "algsort.out", "w", stdout );
int n, i;
scanf( "%d", &n );
for ( i = 1; i <= n; ++i ) scanf( "%d", &V[ i ] );
merge_sort( 1, n );
for( i = 1; i <= n; ++i ) printf( "%d ", V[ i ] );
return 0;
}