Pagini recente » Cod sursa (job #1713114) | Cod sursa (job #2246831) | Cod sursa (job #2784779) | Cod sursa (job #2374083) | Cod sursa (job #2249688)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 5e5 + 5;
int n;
int v[NMAX], aux[NMAX];
void Read()
{
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
}
void Print()
{
for(int i = 1; i <= n; ++i)
g << v[i] << " ";
}
void Unite(int left, int middle, int right)
{
int i = left, j = middle + 1, k = 0;
while(i <= middle && j <= right)
{
if(v[i] < v[j])
aux[++k] = v[i++];
else
aux[++k] = v[j++];
}
while(i <= middle)
aux[++k] = v[i++];
while(j <= right)
aux[++k] = v[j++];
for(int i = left; i <= right; ++i)
v[i] = aux[i - left + 1];
}
void Merge_Sort(int left, int right)
{
int middle;
if(right > left)
{
middle = (left + right) / 2;
Merge_Sort(left, middle);
Merge_Sort(middle + 1, right);
Unite(left, middle, right);
}
}
int main()
{
Read();
Merge_Sort(1, n);
Print();
return 0;
}