Pagini recente » Cod sursa (job #34446) | Cod sursa (job #301757) | Cod sursa (job #633526) | Cod sursa (job #2165300) | Cod sursa (job #2292948)
#include <bits/stdc++.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
vector< int > v;
void mergeUtil(int left, int mid, int right) {
vector< int > temp(right - left + 1);
int i = left, j = mid + 1, k = 0;
while(i <= mid && j <= right) {
if(v[i] < v[j]) {
temp[k++] = v[i++];
} else {
temp[k++] = v[j++];
}
}
while(i <= mid) {
temp[k++] = v[i++];
}
while(j <= right) {
temp[k++] = v[j++];
}
for(int i = left; i <= right; ++i) {
v[i] = temp[i - left];
}
}
void mergeSort(int left, int right) {
if(left < right) {
int mid = (left + right) / 2;
mergeSort(left, mid);
mergeSort(mid + 1, right);
mergeUtil(left, mid, right);
}
}
int main() {
ios::sync_with_stdio(false); in.tie(0); out.tie(0);
int n; in >> n;
v.resize(n);
for(auto &it: v) {
in >> it;
}
mergeSort(0, n - 1);
for(auto it: v) {
out << it << " ";
}
in.close(); out.close();
return 0;
}