Pagini recente » Cod sursa (job #2374465) | Cod sursa (job #2914264) | Cod sursa (job #2054004) | Cod sursa (job #1778355) | Cod sursa (job #2134986)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int x[500001], y[500001];
void smart_sort(int st, int dr) {
if (st == dr) return;
if (st + 1 == dr) {
if (x[st] > x[dr])
swap(x[st], x[dr]);
return ;
}
int med = (st + dr) / 2;
smart_sort(st, med);
smart_sort(med + 1, dr);
int i1 = st, i2 = med + 1;
int pos = st;
while (i1 <= med || i2 <= dr) {
if (i1 > med) {
y[pos++] = x[i2++];
} else if (i2 > dr) {
y[pos++] = x[i1++];
} else {
if (x[i1] < x[i2])
y[pos++] = x[i1++];
else
y[pos++] = x[i2++];
}
}
for (int i = st; i <= dr; ++i)
x[i] = y[i];
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> x[i];
smart_sort(1, n);
for (int i = 1; i <= n; ++i)
cout << x[i] << " ";
}