Pagini recente » Cod sursa (job #2543672) | Cod sursa (job #1393815) | Cod sursa (job #1739676) | Cod sursa (job #2483108) | Cod sursa (job #1707885)
#include <cstdio>
using namespace std;
#define NMAX 500005
int v[ NMAX ];
int au[ NMAX ];
void merga_sort( int st, int dr );
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 ]);
merga_sort( 1, n );
for( i = 1; i <= n; ++i ) printf("%d ",v[ i ]);
return 0;
}
void merga_sort( int st, int dr ){
if( st >= dr ) return ;
int mid = ( st + dr ) / 2;
int i, j, k;
merga_sort( st, mid );
merga_sort( mid + 1, dr );
i = k = st;
j = mid + 1;
while( i <= mid || j <= dr ){
if( ( j > dr ) || ( i <= mid && v[i] < v[j] ) ) au[ k++ ] = v[ i++ ];
else au[ k++ ] = v[ j++ ];
}
for( i = st; i <= dr; ++i )
v[ i ] = au[ i ];
}