Pagini recente » Cod sursa (job #2978905) | Cod sursa (job #1972222) | Cod sursa (job #1154982) | Cod sursa (job #2818013) | Cod sursa (job #2798820)
#include <iostream>
#include <fstream>
using namespace std;
const int N = 500001;
int v [ N ];
void interclasare( int n, int m, int a [], int b [], int c [] ) {
int i = 0, j = 0;
while ( i < n && j < m ) {
if ( a [ i ] < b [ j ] ) {
c [ i + j ] = a [ i ];
i++;
}
else {
c [ i + j ] = b [ j ];
j++;
}
}
while ( i < n ) {
c [ i + j ] = a [ i ];
i++;
}
while ( j < m ) {
c [ i + j ] = b [ j ];
j++;
}
}
void mergesort( int v [], int n ) {
if ( n == 1 )
return;
int i, n1, n2;
n1 = n / 2;
n2 = n - n1;
int a [ n1 ], b [ n2 ];
for ( i = 0; i < n1; i++ )
a [ i ] = v [ i ];
for ( i = 0; i < n2; i++ )
b[ i ] = v [ n1 + i ];
mergesort ( a, n1 );
mergesort ( b, n2 );
interclasare (n1, n2, a, b, v );
}
int main() {
ifstream fin ( "algsort.in" );
ofstream fout ( "algsort.out" );
int n, i;
fin >> n;
for ( i = 0; i < n; i++ )
fin >> v [ i ];
mergesort( v, n );
for ( i = 0; i < n; i++ )
fout << v [ i ] << " ";
return 0;
}