Pagini recente » Cod sursa (job #1654334) | Cod sursa (job #2033125) | Cod sursa (job #1711954) | Cod sursa (job #58494) | Cod sursa (job #1019329)
#include<stdio.h>
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int w[500001],v[500001];
void merge(int s,int d)
{
if(s==d)
return ;
int m=(d+s)/2;
merge(s,m);
merge(m+1,d);
int p1=s;
int p2=m+1;
int nr=0;
while(p1<=m&&p2<=d)
if(v[p1]<v[p2])
{
w[++nr]=v[p1];
++p1;
}else
{
w[++nr]=v[p2];
++p2;
}
while(p1<=m)
{
w[++nr]=v[p1];
++p1;
}
while(p2<=d)
{
w[++nr]=v[p2];
++p2;
}
for(int i=s;i<=d;++i)
v[i]=w[i-s+1];
}
int main()
{
int n;
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&v[i]);
merge(1,n);
for(int i=1;i<=n;++i)
fprintf(g,"%d ",v[i]);
fclose(g);
fclose(f);
return 0;
}