Pagini recente » Rating Octavian Movilianu (brainiac24) | Rating serbancalin (serbancalin) | Statistici Ionescu Andrei (ionescuandrei1402) | Cod sursa (job #1776720) | Cod sursa (job #2296934)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in") ;
ofstream g("algsort.out") ;
long long x[5000001] , n , i ;
void interclaseaza(int st, int mij, int dr)
{
long long i, j, k = 0, y[5000001] ;
i = st;
j = mij + 1;
while (i <= mij && j <= dr)
{
if (x[i] <= x[j])
{
k++;
y[k] = x[i];
i++;
}
else
{
k++;
y[k] = x[j];
j++;
}
}
while (i <= mij)
{
k++;
y[k] = x[i];
++i;
}
while (j <= dr)
{
k++;
y[k] = x[j];
++j;
}
k=1;
for (i = st; i <= dr; ++i)
{
x[i] = y[k];
k++;
}
}
void mergesort( int st , int dr)
{
if( st < dr )
{
mergesort( st , ( st + dr ) / 2 ) ;
mergesort( ( st + dr ) / 2 + 1 , dr ) ;
interclaseaza( st , ( st + dr ) / 2 , dr ) ; }
}
int main()
{
f >> n ;
for( i = 1 ; i <= n ; i ++ )
f >> x[i] ;
mergesort( 1 , n ) ;
for( int i = 1 ; i <= n ; i ++ )
g << x[i]<< " " ;
return 0 ;
}