Pagini recente » Cod sursa (job #1378602) | Cod sursa (job #3215249) | Cod sursa (job #2128459) | Cod sursa (job #1330313) | Cod sursa (job #2900141)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
vector<int> vec;
int n;
void MergeSort(vector<int> &vec) {
if (vec.size() <= 1) return;
vector<int> vec1, vec2;
for (int i=0; i<vec.size()/2; i++) {
vec1.push_back(vec[i]);
}
for (int i=vec.size()/2; i<vec.size(); i++) {
vec2.push_back(vec[i]);
}
MergeSort(vec1);
MergeSort(vec2);
int i = 0;
int j = 0;
vector<int> newvec;
while (i < vec1.size() && j < vec2.size()) {
if (vec1[i] <= vec2[j]) {
newvec.push_back(vec1[i++]);
} else {
newvec.push_back(vec2[j++]);
}
}
while (i < vec1.size()) {
newvec.push_back(vec1[i++]);
}
while (j < vec2.size()) {
newvec.push_back(vec2[j++]);
}
vec = newvec;
}
int main()
{
int a;
in >> n;
for (int i=0; i<n; i++) {
in >> a;
vec.push_back(a);
}
MergeSort(vec);
for (auto &y:vec) {
out << y << " ";
}
return 0;
}