Pagini recente » Cod sursa (job #1683174) | Cod sursa (job #1811974) | Cod sursa (job #1848053) | Cod sursa (job #1178249) | Cod sursa (job #2076416)
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
const int MAX_N = 500005;
int a[MAX_N], b[MAX_N];
void MergeSort(int left, int right) {
if (left >= right) {
return;
}
int middle = (left + right) / 2;
MergeSort(left, middle);
MergeSort(middle + 1, right);
int k = left;
for (int i = left, j = middle + 1; i <= middle || j <= right; ++ k) {
if (j == right + 1 || (i <= middle && a[i] <= a[j])) {
b[k] = a[i ++];
} else {
b[k] = a[j ++];
}
}
for (int i = left; i <= right; ++ i) {
a[i] = b[i];
}
}
int main() {
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n;
cin >> n;
for (int i = 1; i <= n; ++ i) {
cin >> a[i];
}
MergeSort(1, n);
for (int i = 1; i <= n; ++ i) {
cout << a[i] << (i == n ? "\n" : " ");
}
return 0;
}