Pagini recente » Cod sursa (job #152564) | Cod sursa (job #143208) | Cod sursa (job #143338) | Cod sursa (job #2073521) | Cod sursa (job #3287979)
#include <fstream>
#include <vector>
using namespace std;
int n;
vector<int> a;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void mergeSort(vector<int>& a, int st, int dr) {
if (st < dr) {
int mid = (st + dr) >> 1;
mergeSort(a, st, mid);
mergeSort(a, mid + 1, dr);
int l, r;
vector<int> tmp;
l = st, r = mid + 1;
while (l <= mid && r <= dr)
if (a[l] < a[r])
tmp.push_back(a[l++]);
else
tmp.push_back(a[r++]);
while (l <= mid) tmp.push_back(a[l++]);
while (r <= dr) tmp.push_back(a[r++]);
for (int i = st, p = 0; i <= dr; i++, p++) a[i] = tmp[p];
}
}
int main() {
fin >> n;
a = vector<int>(n);
for (int i = 0; i < n; i++) fin >> a[i];
mergeSort(a, 0, n - 1);
for (auto i : a) fout << i << ' ';
fin.close();
fout.close();
return 0;
}