Pagini recente » Cod sursa (job #2254943) | Cod sursa (job #1807932) | Cod sursa (job #2347543) | Monitorul de evaluare | Cod sursa (job #1214792)
#include <iostream>
#include <fstream>
using namespace std;
int aux[500010];
inline void swap (int &a, int &b)
{
int aux = a;
a = b;
b = aux;
}
inline void mergeSort (int v[], int st, int dr)
{
if (dr - st <= 1)
{
if (v[st] > v[dr])
swap(v[st], v[dr]);
}
else
{
int mid = (st + dr) / 2;
mergeSort(v, st, mid);
mergeSort(v, mid, dr);
int i = 0, j = mid + 1, ind = 0;
while (i <= mid && j <= dr)
{
if (v[i] < v[j])
{
aux[ind] = v[i];
++i;
++ind;
}
else
{
aux[ind] = v[j];
++j;
++ind;
}
}
if (i <= mid)
{
for (j = i; j <= mid; ++j)
{
aux[ind] = v[j];
++ind;
}
}
else
{
for (i = j; i <= dr; i++)
{
aux[ind] = v[i];
++ind;
}
}
}
}
int main()
{
ifstream in("algsort.in");
int n, i, *v;
in >> n;
v = new int[n];
for (i = 0; i < n; i++)
in >> v[i];
in.close();
mergeSort(v, 0, n - 1);
ofstream out("algsort.out");
for (i = 0; i < n; i++)
out << aux[i] << " ";
return 0;
}