Pagini recente » Cod sursa (job #776903) | Cod sursa (job #1117293) | Cod sursa (job #2265116) | Cod sursa (job #1562180) | Cod sursa (job #1894565)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int N, a[500005];
void _merge(int left, int right) {
int tmp[right - left + 1];
int middle = (right + left) >> 1;
int i = left, j = middle + 1, k = 0;
while (i <= middle && j <= right) {
if (a[i] <= a[j]) {
tmp[++k] = a[i];
++i;
} else {
tmp[++k] = a[j];
++j;
}
}
while (i <= middle) {
tmp[++k] = a[i];
++i;
}
while (j <= right) {
tmp[++k] = a[j];
++j;
}
for (int i = left, j = 1; i <= right; ++i, ++j) {
a[i] = tmp[j];
}
}
void mergeSort(int left, int right) {
if (left == right) {
return;
}
int middle = (left + right) >> 1;
mergeSort(left, middle);
mergeSort(middle + 1, right);
_merge(left, right);
}
int main() {
f >> N;
for (int i = 1; i <= N; ++i) {
f >> a[i];
}
mergeSort(1, N);
for (int i = 1; i <= N; ++i) {
g << a[i] << ' ';
}
return 0;
}