Pagini recente » Cod sursa (job #1363158) | Cod sursa (job #393363) | Cod sursa (job #136627) | Cod sursa (job #2943985) | Cod sursa (job #2898340)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
vector < int > v;
vector < int > c;
vector < int > merge(vector < int > a, vector < int > b) {
c.clear();
int i = 0;
int j = 0;
int n = a.size();
int m = b.size();
while (i < n && j < m) {
if (a[i] > b[j]) {
c.emplace_back(b[j]);
++j;
}
else {
c.emplace_back(a[i]);
++i;
}
}
while (i < n) {
c.emplace_back(a[i]);
++i;
}
while (j < m) {
c.emplace_back(b[j]);
++j;
}
return c;
}
vector < int > merge_sort(vector < int > &v) {
if (v.size() == 1) return v;
vector < int > v1;
vector < int > v2;
v1.assign(v.begin(), v.begin() + v.size() / 2);
v2.assign(v.begin() + v.size() / 2, v.end());
v1 = merge_sort(v1);
v2 = merge_sort(v2);
return merge(v1, v2);
}
int n;
int main() {
f >> n;
v.resize(n);
for (auto &it : v) {
f >> it;
}
v = merge_sort(v);
for (auto const &it: v) {
g << it << " ";
}
}