Pagini recente » Cod sursa (job #2463366) | Cod sursa (job #1386203) | Cod sursa (job #1591533) | Cod sursa (job #1947928) | Cod sursa (job #1866203)
#include <bits/stdc++.h>
using namespace std ;
const int MAX = 5e5 + 14 ;
int v[MAX] ;
int aux [MAX] ;
void Inter ( int a , int b , int d )
{
int start = a ;
int c = b + 1 ;
int cate = 0 ;
while ( a <= b and c <= d ) {
if ( v[a] > v [c] ) {
aux [++cate] = v [c++] ;
}
else {
aux [++cate] = v[a++] ;
}
}
while ( a <= b ) {
aux [++cate] = v[a++] ;
}
while ( c <= d ) {
aux [++cate] = v [c++] ;
}
for ( int i = 1 ; i <= cate ; ++ i ) {
v [start + i - 1] = aux [i] ;
}
}
void MS ( int i , int j , int n )
{
if ( i == j ) {
return ;
}
if ( i == j + 1 ) {
if ( v[i] > v [j] ) {
swap (v[i], v[j]) ;
}
return ;
}
int mij = ( i + j ) >> 1 ;
MS (i , mij, n) ;
MS (mij + 1 , j, n) ;
Inter (i , mij, j) ;
}
ifstream fin ("algsort.in") ;
ofstream fout ("algsort.out") ;
int main ()
{
int n ;
fin >> n ;
for ( int i = 1 ; i <= n ; ++ i ) {
fin >> v[i] ;
}
MS (1,n,n) ;
for ( int i = 1 ; i <= n ; ++ i ) {
fout << v [i] << ' ' ;
}
return 0 ;
}