Pagini recente » Cod sursa (job #3235721) | Cod sursa (job #1211203) | Cod sursa (job #1798500) | Cod sursa (job #3223277) | Cod sursa (job #2900143)
#include <bits/stdc++.h>
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
void mergeSort(std::vector<int>& arr, int lft, int rgt)
{
if (lft == rgt) {
return;
}
std::vector<int> sorted;
int mid = (lft + rgt) / 2;
mergeSort(arr, lft, mid);
mergeSort(arr, mid + 1, rgt);
int i = lft, j = mid + 1;
while (i <= mid && j <= rgt) {
if (arr[i] >= arr[j]) {
sorted.push_back(arr[j++]);
} else {
sorted.push_back(arr[i++]);
}
}
while (i <= mid) {
sorted.push_back(arr[i++]);
}
while (j <= rgt) {
sorted.push_back(arr[j++]);
}
for (int k = lft; k <= rgt; ++k) {
arr[k] = sorted[k - lft];
}
}
int main() {
int n;
fin >> n;
std::vector<int> arr(n);
for (auto &it:arr) {
fin >> it;
}
mergeSort(arr, 0, n - 1);
for (auto it:arr) {
fout << it << " ";
}
return 0;
}