Pagini recente » Cod sursa (job #2795882) | Cod sursa (job #269279) | Cod sursa (job #3223170) | Cod sursa (job #3250909) | Cod sursa (job #2897311)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void Merge(vector <int> &a, int left, int mid, int right)
{
int i = left, j = mid + 1;
vector <int> aux;
while (i <= mid && j <= right)
{
if (a[i] <= a[j])
aux.push_back(a[i++]);
else aux.push_back(a[j++]);
}
while (i <= mid)
aux.push_back(a[i++]);
while (j <= right)
aux.push_back(a[j++]);
j = 0;
for (i = left; i <= right; i++)
a[i] = aux[j++];
}
void MergeSort(vector <int> &a, int left, int right)
{
if (left >= right)
return;
int mid = (left + right) / 2;
MergeSort(a, left, mid);
MergeSort(a, mid + 1, right);
Merge(a, left, mid, right);
}
void Read_Solve()
{
ifstream fin ("algsort.in");
int n;
fin >> n;
vector <int> v(n);
for (int i = 0; i < n; i++)
fin >> v[i];
MergeSort(v, 0, n - 1);
ofstream fout ("algsort.out");
for (auto &it : v)
fout << it << " ";
fout << "\n";
}
int main() {
Read_Solve();
return 0;
}