Pagini recente » Cod sursa (job #2874182) | Cod sursa (job #2860320) | Cod sursa (job #2242784) | Cod sursa (job #814631) | Cod sursa (job #2643367)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 500005
int A[NMAX], B[NMAX];
void MergeSort(int st, int dr) {
if (st == dr) return;
int mij = (st + dr) >> 1;
MergeSort(st, mij);
MergeSort(mij + 1, dr);
for (int i = st, j = mij + 1, k = st; i <= mij || j <= dr; ) {
if (j > dr || (i <= mij && A[i] < A[j])) {
B[k++] = A[i++];
}
else {
B[k++] = A[j++];
}
}
for (int k = st; k <= dr; ++k) {
A[k] = B[k];
}
}
int main() {
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
int n;
fin >> n;
for (int i = 0; i < n; ++i) fin >> A[i];
MergeSort(0, n - 1);
for (int i = 0; i < n; ++i) fout << A[i] << ' ';
return 0;
}