Pagini recente » Cod sursa (job #985188) | Cod sursa (job #745911) | Cod sursa (job #1031463) | Cod sursa (job #1555602) | Cod sursa (job #371547)
Cod sursa(job #371547)
#include<fstream>
using namespace std;
long a[500000];
void ex(long i,long j)
{
long aux;
if(a[i]>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
void merge(long i,long j)
{
long x[500000],k=0,m=(i+j)/2,c;
long li=i,lj=m+1;
while(li<=m&&lj<=j)
if(a[li]<a[lj]) {k++;x[k]=a[li];li++;}
else {k++; x[k]=a[lj];lj++;}
if(li<=m)for(c=li;c<=m;c++)x[++k]=a[c];
else for(c=lj;c<=j;c++)x[++k]=a[c];
k=1;
for(c=i;c<=j;c++)
a[c]=x[k++];
}
void di(long i,long j)
{
long m=(i+j)/2;
if(abs(j-i)<=1)ex(i,j);
else
{
di(i,m);
di(m+1,j);
merge(i,j);
}
}
int main()
{
long i,n;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++)f>>a[i];
di(1,n);
for(i=1;i<=n;i++)g<<a[i]<<' ';
return 0;
}