Pagini recente » Cod sursa (job #1861240) | Cod sursa (job #2298518) | Cod sursa (job #1258307) | Cod sursa (job #1141814) | Cod sursa (job #2055285)
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
void combina(int l1,int r1,int l2,int r2)
{
vector<int> c;
int i,j;
for(i=l1,j=l2;i<=r1 && j<=r2;)
if(v[i]<=v[j]) c.push_back(v[i++]);
else c.push_back(v[j++]);
while(i<=r1) c.push_back(v[i++]);
while(j<=r2) c.push_back(v[j++]);
for(int i=l1;i<=r2;++i)
v[i]=c[i-l1];
}
void merge_sort(int st,int dr)
{
if(dr<=st) return;
int mij=(dr-st)/2+st;
merge_sort(st,mij);
merge_sort(mij+1,dr);
combina(st,mij,mij+1,dr);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i;
f>>n;v.resize(n);
for(i=0;i<n;++i)
f>>v[i];
merge_sort(0,n-1);
for(i=0;i<n;++i)
g<<v[i]<<' ';
return 0;
}