Pagini recente » Cod sursa (job #1227085) | Cod sursa (job #335337) | Cod sursa (job #1032583) | Cod sursa (job #2967805) | Cod sursa (job #2065553)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001];
void interclasare ( int st, int m, int dr )
{
int i, j, k=0, aux[500001];
i = st;
j = m + 1;
while ( ( i <= m ) && ( j <= dr ) )
if( v[i] <= v[j] )
{
k++;
aux[k] = v[i];
i++;
}
else
aux[++k] = v[j++];
while ( i <= m )
aux[++k] = v[i++];
while ( j <= dr )
aux[++k] = v[j++];
for ( i = 1; i <= k; i++ )
v[st+i-1] = aux[i];
}
void MergeSort ( int st, int dr)
{
if ( st < dr )
{
int m = (st+dr)/2;
MergeSort( st, m);
MergeSort( m+1, dr);
interclasare( st, m, dr);
}
}
int main()
{
int n, i;
fin >> n;
for( i = 1; i <= n; i++ )
fin >> v[i];
MergeSort( 1, n);
for( i = 1; i <= n; i++ )
fout << v[i] << " ";
return 0;
}