Pagini recente » Cod sursa (job #1291550) | Cod sursa (job #941839) | Cod sursa (job #1745770) | Cod sursa (job #745664) | Cod sursa (job #2897329)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500001], n;
void merge(int st, int dr, int mid)
{
int k[500001];
int i = st, j = mid + 1, cnt = 0;
while (i <= mid && j <= dr)
{
if (v[i] < v[j])
{
k[cnt++] = v[i];
++i;
}
else
{
k[cnt++] = v[j];
++j;
}
}
for (; i <= mid; ++i)
k[cnt++] = v[i];
for (; j <= dr; ++j)
k[cnt++] = v[j];
for (i = 0; i < cnt; ++i)
{
v[st + i] = k[i];
}
}
void mergeSort(int st, int dr)
{
int mid = (dr + st) / 2;
if (st < dr)
{
mergeSort(st, mid);
mergeSort(mid + 1, dr);
merge(st, dr, mid);
}
}
void printArray()
{
for (int i = 0; i < n; ++i)
cout << v[i] << " ";
cout << endl;
}
int main()
{
cin >> n;
int i;
for (i = 0; i < n; ++i)
cin >> v[i];
mergeSort(0, n - 1);
printArray();
return 0;
}