Pagini recente » Cod sursa (job #278301) | Cod sursa (job #1361266) | Cod sursa (job #271818) | Cod sursa (job #698737) | Cod sursa (job #2897645)
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, a[500005];
void mergeArr(int l, int r) {
int m = l + (r - l) / 2;
vector<int> newArr;
int lidx = l, ridx = m+1;
while(lidx <= m && ridx <= r) {
if(a[lidx] < a[ridx]) {
newArr.push_back(a[lidx]);
lidx++;
} else {
newArr.push_back(a[ridx]);
ridx++;
}
}
while(lidx <= m) {
newArr.push_back(a[lidx]);
lidx++;
}
while(ridx <= r) {
newArr.push_back(a[ridx]);
ridx++;
}
for(int i = l; i <= r; i++) {
a[i] = newArr[i-l];
}
}
void mergeSort(int l, int r) {
if(l == r) return;
int m = l + (r - l) / 2;
mergeSort(l, m);
mergeSort(m+1, r);
mergeArr(l, r);
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
mergeSort(1, n);
for(int i = 1; i <= n; i++) cout << a[i] << ' ';
cout << '\n';
}