Pagini recente » meister | Cod sursa (job #797063) | Cod sursa (job #2785978) | Cod sursa (job #2345752) | Cod sursa (job #2898290)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
vector < long long > merge(vector < long long > a, vector < long long > b) {
vector < long long > c;
while (!a.empty() && !b.empty()) {
if (a[0] > b[0]) {
c.emplace_back(b[0]);
b.erase(b.begin());
}
else {
c.emplace_back(a[0]);
a.erase(a.begin());
}
}
while (!a.empty()) {
c.emplace_back(a[0]);
a.erase(a.begin());
}
while (!b.empty()) {
c.emplace_back(b[0]);
b.erase(b.begin());
}
return c;
}
vector < long long > merge_sort(vector < long long > v) {
if (v.size() == 1) return v;
vector < long long > v1;
vector < long long > v2;
for (auto it = v.begin(); it != v.begin() + v.size() / 2; ++it) {
v1.emplace_back(*it);
}
for (auto it = v.begin() + v.size() / 2; it != v.end(); ++it) {
v2.emplace_back(*it);
}
v1 = merge_sort(v1);
v2 = merge_sort(v2);
return merge(v1, v2);
}
long long n;
int main() {
f >> n;
vector < long long > v(n);
for (auto &it : v) {
f >> it;
}
v = merge_sort(v);
for (long long & it : v) {
g << it << " ";
}
}