Pagini recente » Cod sursa (job #369610) | Cod sursa (job #2697026) | Cod sursa (job #2771066) | Cod sursa (job #878455) | Cod sursa (job #3133326)
#include <bits/stdc++.h>
#define ll long long
#define cin fin
#define cout fout
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[100005];
void interclasare(int start1, int end1, int start2, int end2) {
vector <int> sorted;
int copy = start1;
while (start1 <= end1 && start2 <= end2) {
if (v[start1] <= v[start2]) {
sorted.push_back(v[start1]);
++start1;
} else {
sorted.push_back(v[start2]);
++start2;
}
}
while (start1 <= end1) {
sorted.push_back(v[start1]);
++start1;
}
while (start2 <= end2) {
sorted.push_back(v[start2]);
++start2;
}
for (int i : sorted) {
v[copy] = i;
++copy;
}
}
void sortMerge(int start, int end) {
if (start >= end)
return;
int mijl = (start + end) / 2;
sortMerge(start, mijl);
sortMerge(mijl + 1, end);
interclasare(start, mijl, mijl + 1, end);
}
int main() {
ios :: sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> v[i];
}
sortMerge(0, n - 1);
for (int i = 0; i < n; ++i) {
cout << v[i] << ' ';
}
return 0;
}