Pagini recente » Cod sursa (job #286065) | Cod sursa (job #80120) | Cod sursa (job #1056332) | Cod sursa (job #135359) | Cod sursa (job #2730244)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
void mergesort(vector<int>& v, int st, int dr, vector<int>& temp)
{
if (st < dr)
{
int mij = (st + dr) / 2;
mergesort(v, st, mij, temp);
mergesort(v, mij+1, dr,temp);
int i = st, j = mij+1, k = 0;
while (i <= mij && j <= dr)
if (v[i] < v[j])
temp[++k] = v[i++];
else
temp[++k] = v[j++];
while (i <= mij)
temp[++k] = v[i++];
while (j <= dr)
temp[++k] = v[j++];
for (int cnt1 = st, cnt2 = 1; cnt1 <= dr; cnt1++, cnt2++)
v[cnt1] = temp[cnt2];
}
}
int main()
{
f >> n;
vector<int> v(n + 1), temp(n + 1);
for (int i = 1; i <= n; i++)
f >> v[i];
mergesort(v, 1, n, temp);
for (int i = 1; i <= n; i++)
g << v[i] << " ";
}