Pagini recente » Cod sursa (job #3365014) | Cod sursa (job #3365019) | Cod sursa (job #3365010) | Cod sursa (job #3365003) | Cod sursa (job #3365017)
#include <iostream>
#include <cstdio>
using namespace std;
const int MAXN = 500005;
int n;
int arr[MAXN];
int temp[MAXN];
void sortare(int st, int dr) {
if (st == dr)
return;
int mid = (st + dr) / 2;
sortare(st, mid);
sortare(mid + 1, dr);
int i = st, j = mid + 1, k = st;
while (i <= mid && j <= dr)
if (arr[i] > arr[j]) {
temp[k] = arr[j];
++k, ++j;
}
else {
temp[k] = arr[i];
++k, ++i;
}
while (i <= mid) {
temp[k] = arr[i];
++k, ++i;
}
while (j <= dr) {
temp[k] = arr[j];
++k, ++j;
}
for (int idx = st; idx <= dr; ++idx)
arr[idx] = temp[idx];
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
cin >> n;
for (int i = 0; i < n; ++i)
cin >> arr[i];
sortare(0, n - 1);
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
return 0;
}