Pagini recente » Cod sursa (job #1727967) | Cod sursa (job #509362) | Cod sursa (job #105511) | Cod sursa (job #2778029) | Cod sursa (job #2900145)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int dim = 500005;
int vec[dim];
int n;
void MergeSort(int *vec, int n) {
if (n <= 1) return;
int *vec1, *vec2;
vec1 = vec;
int a_n = n/2;
vec2 = vec + n/2;
int b_n = n - n/2;
MergeSort(vec1, a_n);
MergeSort(vec2, b_n);
int i = 0;
int j = 0;
vector<int> newvec;
while (i < a_n && j < b_n) {
if (vec1[i] <= vec2[j]) {
newvec.push_back(vec1[i++]);
} else {
newvec.push_back(vec2[j++]);
}
}
while (i < a_n) {
newvec.push_back(vec1[i++]);
}
while (j < b_n) {
newvec.push_back(vec2[j++]);
}
int cnt = 0;
for (auto &y:newvec) {
vec[cnt++] = y;
}
}
int main()
{
in >> n;
for (int i=0; i<n; i++) {
in >> vec[i];
}
MergeSort(vec, n);
for (int i=0; i<n; i++) {
out << vec[i] << " ";
}
return 0;
}