Pagini recente » Cod sursa (job #3235392) | Cod sursa (job #2154061) | Cod sursa (job #699453) | Cod sursa (job #1950241) | Cod sursa (job #3128861)
#include <iostream>
#include <vector>
using namespace std;
int v[500000];
void MergeSort(int st, int dr)
{
int m = (st + dr) / 2;
if (st == dr)
{
return;
}
if (st + 1 == dr)
{
if (v[st] > v[dr])
{
int aux = v[st];
v[st] = v[dr];
v[dr] = aux;
}
return;
}
MergeSort(st, m);
MergeSort(m + 1, dr);
vector<int> interclasare;
int k1 = st, k2 = m + 1;
while (k1 <= m && k2 <= dr)
{
if (v[k1] < v[k2])
interclasare.push_back(v[k1++]);
else
interclasare.push_back(v[k2++]);
}
while(k1 <= m)
interclasare.push_back(v[k1++]);
while(k2 <= dr)
interclasare.push_back(v[k2++]);
for (int i = st; i <= dr; i ++)
v[i] = interclasare[i - st];
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++)
cin >> v[i];
MergeSort(0, n - 1);
for (int i = 0; i < n; i ++)
cout << v[i] << " ";
return 0;
}