Pagini recente » Cod sursa (job #1338772) | Cod sursa (job #57460) | Cod sursa (job #2528118) | Cod sursa (job #395463) | Cod sursa (job #2940327)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500009];
int a[500009];
void Unire(int st1,int dr1,int st2,int dr2)
{
for(int i=st1;i<=dr1;++i)a[i] = v[i];
for(int j=st2;j<=dr2;++j)a[j] = v[j];
int k = min(st1,st2);
int i = st1,j = st2;
while(i<=dr1&&j<=dr2)
{
if(a[i]<a[j])
v[k++]=a[i++];
else v[k++]=a[j++];
}
while(i<=dr1)v[k++]=a[i++];
while(j<=dr2)v[k++]=a[j++];
}
void Mergesort(int st,int dr)
{
if(st<dr)
{
int mij = (st+dr)/2;
Mergesort(st,mij);
Mergesort(mij+1,dr);
Unire(st,mij,mij+1,dr);
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;++i)cin>>v[i];
Mergesort(0,n-1);
for(int i=0;i<n;++i)cout<<v[i]<<' ';
return 0;
}