Pagini recente » Cod sursa (job #1138273) | Cod sursa (job #2214084) | Cod sursa (job #1828447) | Cod sursa (job #2039992) | Cod sursa (job #357787)
Cod sursa(job #357787)
#include<stdio.h>
#define M 500000
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");
long n,v[M];
void interclasare(long i, long j)
{
long m,p,q,k,w[M];
m=(i+j)/2;
p=i;
q=m+1;
k=0;
while(p<=m && q<=j)
{
if(v[p]<v[q]) w[++k]=v[p++];
else w[++k]=v[q++];
}
while(p<=m)
w[++k]=v[p++];
while(q<=j)
w[++k]=v[q++];
k=1;
for(p=i;p<=j;p++)
v[p]=w[k++];
}
void merge(long i, long j)
{
if(i<j) {long m=(i+j)/2;
merge(i,m);
merge(m+1,j);
interclasare(i,j);}
}
void afis()
{
long i;
for(i=1;i<=n;i++)
fprintf(g,"%ld ",v[i]);
fprintf(g,"\n");
}
int main()
{
long i;
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
merge(1,n);
afis();
fclose(f);
fclose(g);
return 0;
}