Pagini recente » Cod sursa (job #2374847) | Cod sursa (job #59995) | Cod sursa (job #1595282) | Cod sursa (job #2805157) | Cod sursa (job #1021151)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
vector<int> merge (vector<int>& v1, vector<int>& v2)
{
vector<int> ret;
vector<int>::iterator i1, i2;
i1 = v1.begin();
i2 = v2.begin();
while (i1 != v1.end() && i2 != v2.end())
{
if (*i1 < *i2)
{
ret.push_back(*i1);
++i1;
}
else
{
ret.push_back(*i2);
++i2;
}
}
while (i1 != v1.end())
{
ret.push_back(*i1);
++i1;
}
while (i2 != v2.end())
{
ret.push_back(*i2);
++i2;
}
return ret;
}
vector<int> mergeSort (vector<int>& v)
{
if (v.size() == 1)
return v;
vector<int>::iterator m = v.begin() + (v.size() / 2);
vector<int> left = vector<int> (v.begin(), m);
vector<int> right = vector<int> (m, v.end());
vector<int> sortedLeft = mergeSort (left);
vector<int> sortedRight = mergeSort (right);
return merge(sortedLeft, sortedRight);
}
int main()
{
int n; cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
{
int x; cin >> x;
v.push_back(x);
}
v = mergeSort(v);
for (int i = 0; i < n; i++)
cout << v[i] << " ";
}