Pagini recente » Cod sursa (job #2154685) | Cod sursa (job #3274416) | Cod sursa (job #1605130) | Cod sursa (job #2839451) | Cod sursa (job #2646752)
#include <iostream>
#include <fstream>
using namespace std;
int v[500005];
int answer[500005];
void mergeSort(int left, int right) {
if (left >= right) return;
int middle = (left + right) / 2;
mergeSort(left, middle);
mergeSort(middle + 1, right);
int leftIndex = left, rightIndex = middle + 1;
for (int i = left; i <= right; ++i) {
if (rightIndex > right || (leftIndex <= middle and v[leftIndex] <= v[rightIndex])) {
answer[i] = v[leftIndex];
leftIndex += 1;
} else {
answer[i] = v[rightIndex];
rightIndex += 1;
}
}
for (int i = left; i <= right; ++i) {
v[i] = answer[i];
}
}
int main()
{
ifstream fin("algsort.in");
ofstream fout ("algsort.out");
int N;
fin >> N;
for (int i = 1; i <= N; ++i) {
fin >> v[i];
}
mergeSort(1, N);
for (int i = 1; i <= N; ++i) {
fout << v[i] << " ";
}
return 0;
}