Pagini recente » Cod sursa (job #2453972) | Cod sursa (job #2911481) | Cod sursa (job #1787830) | Cod sursa (job #3220868) | Cod sursa (job #2272337)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> sortare_interclasare(vector <int> a, vector <int> b, int n) {
int i = 0, j = 0;
vector <int> v;
for (int k = 0; k < n; k++) {
if (i == a.size()) {
v.push_back(b[j]);
j++;
continue;
}
if (j == b.size()) {
v.push_back(a[i]);
i++;
continue;
}
if (a[i] > b[j]) {
v.push_back(b[j]);
j++;
}
else {
v.push_back(a[i]);
i++;
}
}
return v;
}
void merge_sort(vector <int> &v) {
if (v.size() > 1) {
int mid = v.size() / 2;
vector <int> a, b;
for (int i = 0; i < mid; i++)
a.push_back(v[i]);
for (int i = mid; i < v.size(); i++)
b.push_back(v[i]);
merge_sort(a);
merge_sort(b);
v = sortare_interclasare(a, b, v.size());
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n, numar;
vector <int> numere;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &numar);
numere.push_back(numar);
}
merge_sort(numere);
for (int i = 0; i < n; i++)
printf("%d ", numere[i]);
return 0;
}