Pagini recente » Cod sursa (job #2616031) | Cod sursa (job #1875757) | Cod sursa (job #1920649) | Cod sursa (job #1792606) | Cod sursa (job #1563407)
#include<fstream>
#define DM 500050
using namespace std;
fstream fin("algsort.in",ios::in),fout("algsort.out",ios::out);
int n,x[DM],aux[DM];
void merge(int start,int stop)
{
int m=(start+stop)/2,nr=0,a,b,i,j;
if(start==stop) return ;
if(stop-start==1)
{
a=min(x[start],x[stop]);
b=max(x[start],x[stop]);
x[start]=a;
x[stop]=b;
return ;
}
merge(start,m);merge(m+1,stop);
for(i=start,j=m+1; i<=m && j<=stop ; )
{
if(x[i]<x[j])
{
aux[nr++]=x[i];
i++;
}
else
{
aux[nr++]=x[j];
j++;
}
}
for(;i<=m;i++) aux[nr++]=x[i];
for(;j<=stop;j++) aux[nr++]=x[j];
for(i=0;i<nr;i++) x[start+i]=aux[i];
}
int main()
{
int i;
fin>>n;
for(i=1;i<=n;i++) fin>>x[i];
merge(1,n);
for(i=1;i<=n;i++) fout<<x[i]<<" ";
}