Pagini recente » Cod sursa (job #2116564) | Cod sursa (job #802669) | Cod sursa (job #1274639) | Cod sursa (job #901438) | Cod sursa (job #1867918)
#include <fstream>
using namespace std ;
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
const int MAX = 5e5 + 14 ;
int v[MAX] ;
int aux[MAX] ;
void Inter (int a, int b, int d) {
int c = b + 1 ;
int old = a ;
int cate = 0 ;
while ( a <= b and c <= d ) {
if ( v[a] < v[c] ) aux [++cate] = v[a++] ;
else aux [++cate] = v[c++] ;
}
while (a<=b)aux [++cate] = v[a++] ;
while (c<=d)aux [++cate] = v[c++] ;
for (int i = 1 ; i <= cate ; ++ i) {
v [i+old-1] = aux [i] ;
}
}
void MS ( int i , int j )
{
if ( i == j )
return ;
if ( i == j - 1 )
if ( v[i] > v [j] )
swap (v[i],v[j]) ;
int mij = ( i + j ) >> 1 ;
MS (i, mij) ;
MS (mij + 1, j) ;
Inter (i, mij, j) ;
}
int main ()
{
int n ;
cin >> n ;
for ( int i = 1 ; i <= n ; ++ i )
cin >> v[i] ;
MS (1, n) ;
for ( int i = 1 ; i <= n ; ++ i )
cout << v [i] << ' ' ;
return 0;
}