Pagini recente » Cod sursa (job #2631266) | Cod sursa (job #806857) | Cod sursa (job #2840980) | Cod sursa (job #734435) | Cod sursa (job #1246142)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void mergesort(vector<int> & v, const int& left, const int& right) {
if (left == right) {
return;
}
int mid = left + (right - left)/2;
mergesort(v, left, mid);
mergesort(v, mid + 1, right);
int i = left;
int j = mid + 1;
vector<int> merged;
while (i <= mid && j <=right) {
if (v[i] < v[j]) {
merged.push_back(v[i++]);
} else {
merged.push_back(v[j++]);
}
}
while (i <= mid) {
merged.push_back(v[i++]);
}
while (j <= right) {
merged.push_back(v[j++]);
}
for (int k = left; k <= right; ++k) {
v[k] = merged[k - left];
}
}
void sort(vector<int> &v) {
mergesort(v, 0, v.size() - 1);
}
int main (int argc, char const *argv[]) {
int n;
vector<int> v;
in>>n;
for(int i = 0; i < n; ++i) {
int x;
in>> x;
v.push_back(x);
}
sort(v);
out<<"\n";
for (const auto& nr : v) {
out<<nr<<" ";
}
out<<"\n";
return 0;
}