Pagini recente » Cod sursa (job #33581) | Cod sursa (job #1550286) | Cod sursa (job #1316602) | Cod sursa (job #1930465) | Cod sursa (job #2272338)
#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(v.begin(), v.begin() + mid), b(v.begin() + mid, v.end());
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;
}