Pagini recente » Cod sursa (job #2085078) | Cod sursa (job #3197251) | Cod sursa (job #446425) | Cod sursa (job #362982) | Cod sursa (job #2897646)
#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() {
fin >> n;
for(int i = 1; i <= n; i++) fin >> a[i];
mergeSort(1, n);
for(int i = 1; i <= n; i++) fout << a[i] << ' ';
fout << '\n';
}