Pagini recente » Cod sursa (job #3220463) | Cod sursa (job #2815535) | Cod sursa (job #1339060) | Cod sursa (job #1136792) | Cod sursa (job #2530459)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void interclaseaza(vector <int> &a, int st, int m, int dr) {
int i = st, j = m + 1;
vector <int> aux;
while (i <= m && j <= dr) {
if (a[i] < a[j]) {
aux.push_back(a[i]);
i++;
}
else {
aux.push_back(a[j]);
j++;
}
}
while (i <= m) {
aux.push_back(a[i]);
i++;
}
while (j <= dr) {
aux.push_back(a[j]);
j++;
}
for (i = st; i <= dr; i++) {
a[i] = aux[i - st];
}
}
void mergesort(vector <int> &a, int st, int dr) {
if (st >= dr) {
return;
}
int m = st + (dr - st) / 2;
mergesort(a, st, m);
mergesort(a, m + 1, dr);
interclaseaza(a, st, m, dr);
}
int main() {
int n;
in >> n;
vector <int> a(n);
for (int i = 0; i < n; i++) {
in >> a[i];
}
mergesort(a, 0, n - 1);
for (int i = 0; i < n; i++) {
out << a[i] << ' ';
}
out << '\n';
return 0;
}