Pagini recente » Cod sursa (job #1910144) | Cod sursa (job #2572324) | Cod sursa (job #3215812) | Cod sursa (job #1507572) | Cod sursa (job #2531032)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
#define nMax 500001
int n, v[nMax];
void merge(int st, int mij, int dr) {
int h, i, j, a[nMax], k;
h = st;
i = st;
j = mij + 1;
while ((h <= mij) && (j <= dr)) {
if (v[h] <= v[j]) {
a[i] = v[h];
h++;
}
else {
a[i] = v[j];
j++;
}
i++;
}
if (h > mij) {
for (k = j; k <= dr; k++) {
a[i] = v[k];
i++;
}
}
else {
for (k = h; k <= mij; k++) {
a[i] = v[k];
i++;
}
}
for (k = st; k <= dr; k++)
v[k] = a[k];
}
void mergeSort(int st, int dr) {
if (st < dr) {
int mij = st + (dr - st) / 2;
mergeSort(st, mij);
mergeSort(mij + 1, dr);
merge(st, mij, dr);
}
}
int main() {
f >> n;
for (int i = 1; i <= n; i++)
f >> v[i];
mergeSort(1, n);
for (int i = 1; i <= n; i++)
g << v[i] << ' ';
}