Pagini recente » Cod sursa (job #1613763) | Cod sursa (job #2578878) | Cod sursa (job #1007861) | Cod sursa (job #145172) | Cod sursa (job #3128862)
#include <iostream>
#include <vector>
using namespace std;
int *v;
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;
v = new int[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;
}