Pagini recente » Cod sursa (job #670037) | Cod sursa (job #1072237) | Cod sursa (job #2892609) | Cod sursa (job #1042451) | Cod sursa (job #3128863)
#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];
}
void QuickSort(int st, int dr)
{
if (st >= dr)
return;
int i = st, j = dr, k = 0;
while(j != i)
{
if (v[i] > v[j])
{
int aux = v[i];
v[i] = v[j];
v[j] = aux;
k = 1-k;
}
i += k;
j -= 1 - k;
}
QuickSort(st, (st + dr) / 2);
QuickSort((st + dr) / 2 + 1, dr);
}
int main()
{
int n;
cin >> n;
v = new int[n];
for (int i = 0; i < n; i ++)
cin >> v[i];
QuickSort(0, n - 1);
for (int i = 0; i < n; i ++)
cout << v[i] << " ";
return 0;
}