Pagini recente » Cod sursa (job #393123) | Cod sursa (job #362674) | Cod sursa (job #1206333) | Cod sursa (job #3005207) | Cod sursa (job #2272336)
#include <stdio.h>
#include <vector>
using namespace std;
void sortare_interclasare(vector <int> a, vector <int> b, vector <int> &v) {
int i = 0, j = 0, n = v.size();
v.clear();
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++;
}
}
}
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);
sortare_interclasare(a, b, v);
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n, numar;
vector <int> numere;
scanf("%i", &n);
for (int i = 0; i < n; i++) {
scanf("%i", &numar);
numere.push_back(numar);
}
merge_sort(numere);
for (int i = 0; i < n; i++)
printf("%i ", numere[i]);
return 0;
}