Pagini recente » Cod sursa (job #1510720) | Cod sursa (job #1134275) | Monitorul de evaluare | Atasamentele paginii Aquilla | Cod sursa (job #2493221)
#include <queue>
#include <fstream>
#include <iostream>
using namespace std;
int v[500010], aux[500010], i, j, n;
void merge_sort( int st, int dr )
{
if( dr <= st )
return;
int mij = (st + dr) / 2;
merge_sort(st, mij);
merge_sort(mij+1, dr);
int ps = st, pd = mij + 1;
int i = 1;
while( ps <= mij || pd <= dr )
{
if( ps <= mij && pd <= dr )
{
if( v[ps] <= v[pd] )
{
aux[ i ] = v[ps];
ps++;
}
else
{
aux[ i ] = v[pd];
pd++;
}
}
else if( ps <= mij )
{
aux[ i ] = v[ps];
ps++;
}
else
{
aux[ i ] = v[pd];
pd++;
}
i++;
}
for(int i = st ; i <= dr ; i++)
{
v[ i ] = aux[ i - st + 1 ];
}
}
int main()
{
ifstream cin("algsort.in");
ifstream cout("algsort.out");
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
cin >> v[i];
}
merge_sort(1, n);
for(int i = 1 ; i <= n ; i++)
{
cout << v[i] << ' ';
}
return 0;
}