Pagini recente » Cod sursa (job #2820078) | Cod sursa (job #1636338) | Cod sursa (job #2635390) | Cod sursa (job #1643851) | Cod sursa (job #2263823)
#include <bits/stdc++.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n, a[500100], b[500100];
void Merge(int l, int r, int ll, int rr) {
int p1 = l, p2 = ll;
for (int i = 1; i <= rr - l + 1; i++) {
if (p1 > r)
b[i] = a[p2++];
else if (p2 > rr)
b[i] = a[p1++];
else if (a[p1] <= a[p2])
b[i] = a[p1++];
else b[i] = a[p2++];
}
for (int i = l; i <= rr; i++)
a[i] = b[i - l + 1];
}
void Sort(int st, int dr) {
if (st == dr)
return;
int mid = st + dr >> 1;
Sort(st, mid);
Sort(mid + 1, dr);
Merge(st, mid, mid + 1, dr);
}
int main() {
in >> n;
for (int i = 1; i <= n; i++)
in >> a[i];
Sort(1, n);
for (int i = 1; i <= n; i++)
out << a[i] << ' ';
return 0;
}