Pagini recente » Cod sursa (job #2175740) | Cod sursa (job #1972938) | Cod sursa (job #2794170) | Cod sursa (job #127899) | Cod sursa (job #384724)
Cod sursa(job #384724)
//
#include<stdio.h>
FILE *f=fopen("algsort.in","r"),*g=fopen("algsort.out","w");
int v[500001],c[500001],n;
void inter(int ls, int mj, int ld)
{int i,j,k,x;
i=ls;
j=mj+1;
k=0;
while(i<=mj&&j<=ld)
if(v[i]<v[j])
c[++k]=v[i++];
else
c[++k]=v[j++];
if(i<=mj)
for(x=i;x<=mj;x++)
c[++k]=v[x];
if(j<=ld)
for(x=j;x<=ld;x++)
c[++k]=v[x];
j=1;
for(i=ls;i<=ld;i++)
v[i]=c[j++];
}
void ms(int ls,int ld)
{
int aux,mj;
if(ld-ls<=1)
{
if(v[ls]>v[ld])
{
aux=v[ls];
v[ls]=v[ld];
v[ld]=aux;
}
}
else
{
mj=(ls+ld)/2;
ms(ls,mj);
ms(mj+1,ld);
inter(ls,mj,ld);
}
}
int main()
{
int i;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d", &v[i]);
ms(1,n);
for(i=1;i<=n;i++)
fprintf(g,"%d ",v[i]);
fclose(f);
fclose(g);
return 0;
}