Pagini recente » Cod sursa (job #3293772) | Cod sursa (job #3282858) | Cod sursa (job #2275703) | Cod sursa (job #3278440) | Cod sursa (job #3261650)
#include <bits/stdc++.h>
using namespace std;
int n;
int v[500001];
int c[500001];
void interclasare(int st, int dr) {
int mid = (st + dr) / 2;
int i = st, j = mid + 1, k = st - 1;
while (i <= mid && j <= dr) {
if (v[i] <= v[j]) {
c[++k] = v[i];
++i;
} else {
c[++k] = v[j];
++j;
}
}
while (i <= mid) {
c[++k] = v[i];
++i;
}
while (j <= dr) {
c[++k] = v[j];
++j;
}
for (int i = st; i <= dr; ++i) {
v[i] = c[i];
}
}
void mergesort(int st, int dr) {
if (st == dr) {
return;
}
int mid = (st + dr) / 2;
mergesort(st, mid);
mergesort(mid + 1, dr);
interclasare(st, dr);
}
int main() {
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> v[i];
}
mergesort(1, n);
for (int i = 1; i <= n; ++i) {
cout << v[i] << " ";
}
}