Pagini recente » Cod sursa (job #1132963) | Cod sursa (job #565152) | Cod sursa (job #2599989) | Cod sursa (job #2505578) | Cod sursa (job #2723551)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void mergeHalves(vector<int> &v, int low, int high) {
int mid = low + (high - low) / 2;
int i = low;
int j = mid + 1;
vector<int> aux;
while (i <= mid && j <= high) {
if (v[i] < v[j]) {
aux.push_back(v[i]);
i++;
} else {
aux.push_back(v[j]);
j++;
}
}
while (i <= mid) {
aux.push_back(v[i]);
i++;
}
while (j <= high) {
aux.push_back(v[j]);
j++;
}
for (int i = low; i <= high; i++) {
v[i] = aux[i - low];
}
}
void mergeSort(vector<int> &v, int low, int high) {
if (low < high) {
int mid = low + (high - low) / 2;
mergeSort(v, low, mid);
mergeSort(v, mid + 1, high);
mergeHalves(v, low, high);
}
}
int main() {
int n;
fin >> n;
vector<int> v;
for (int i = 0, x; i < n; i++) {
fin >> x;
v.push_back(x);
}
mergeSort(v, 0, n - 1);
for (int x : v) {
fout << x << " ";
}
return 0;
}