Pagini recente » Cod sursa (job #428007) | Cod sursa (job #614180) | Cod sursa (job #917835) | Cod sursa (job #48704) | Cod sursa (job #2900998)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void mergeSort(vector<int>& v, int st, int dr)
{
if (st == dr) {
return;
}
vector<int> sortat;
int mid = (st + dr) / 2;
mergeSort(v, st, mid);
mergeSort(v, mid + 1, dr);
int i = st, j = mid + 1;
while (i <= mid && j <= dr) {
if (v[i] >= v[j]) {
sortat.push_back(v[j++]);
} else {
sortat.push_back(v[i++]);
}
}
while (i <= mid) {
sortat.push_back(v[i++]);
}
while (j <= dr) {
sortat.push_back(v[j++]);
}
for (int ct = st; ct <= dr; ct++) {
v[ct] = sortat[ct - st];
}
}
int main() {
int n;
fin >> n;
vector<int> v(n);
for (int i=0; i<n; i++) {
fin >> v[i];
}
mergeSort(v, 0, n - 1);
for (int i=0; i<n; i++) {
fout << v[i] << " ";
}
}