Pagini recente » Cod sursa (job #1548494) | Cod sursa (job #193529) | Cod sursa (job #2165499) | Cod sursa (job #1809708) | Cod sursa (job #2927133)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n,v[500001];
void swapp(int l,int r)
{
int mid=(l+r)/2;
vector<int> a,b;
for(int i=mid;i>=l;i--)
a.push_back(v[i]);
for(int i=r;i>=mid+1;i--)
b.push_back(v[i]);
for(int i=l;i<=r;i++)
{
if(!a.empty() && a.back()<b.back())
{
v[i]=a.back();
a.pop_back();
}
else
{
v[i]=b.back();
b.pop_back();
}
}
}
void msort(int l,int r)
{
if(l>=r)
return;
int mid=(l+r)/2;
msort(l,mid);
msort(mid+1,r);
if(v[mid]>v[mid+1])
swapp(l,r);
}
int main()
{
ios_base::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
msort(1,n);
for(int i=1;i<=n;i++)
cout<<v[i]<<' ';
return 0;
}