Pagini recente » Cod sursa (job #586983) | Cod sursa (job #468577) | Cod sursa (job #1661767) | Cod sursa (job #3324293) | Cod sursa (job #2065124)
#include <fstream>
#include <vector>
using namespace std;
void merge(vector<int>& v, int left, int mid, int right)
{
int i = left, j = mid + 1;
vector<int> temp;
while(i <= mid && j <= right)
{
if(v[i] <= v[j])
{
temp.push_back(v[i]);
++i;
}
else
{
temp.push_back(v[j]);
++j;
}
}
while(i <= mid)
{
temp.push_back(v[i]);
++i;
}
while(j <= right)
{
temp.push_back(v[j]);
++j;
}
for(int i = left;i <= right;++i)
{
v[i] = temp[i - left];
}
}
void srt(vector<int>& v, int left, int right)
{
if(left >= right)
{
return;
}
int mid = left + (right - left) / 2;
srt(v, left, mid);
srt(v, mid + 1, right);
merge(v, left, mid, right);
}
int main()
{
ifstream in("sort.in");
ofstream out("sort.out");
int n;
in >> n;
vector<int> v(n);
for(int i = 0;i < n;++i)
{
in >> v[i];
}
srt(v, 0, v.size() - 1);
for(int i = 0;i < n - 1;++i)
{
out << v[i] << " ";
}
out << v[n - 1] << "\n";
in.close();
out.close();
}