Pagini recente » Cod sursa (job #344640) | Cod sursa (job #2870939) | Cod sursa (job #2868518) | Cod sursa (job #1907765) | Cod sursa (job #337649)
Cod sursa(job #337649)
#include <stdio.h>
long i,d[500002],n;
void inter(long x,long m,long y){
long a[500002];
for(i=x;i<=y;i++) a[i]=d[i];
long i1=x;
long i2=m+1;
long k=x-1;
while(i1<=m&&i2<=y)
if(a[i1]<a[i2]) d[++k]=a[i1++];
else d[++k]=a[i2++];
for(i=i1;i<=m;i++) d[++k]=a[i];
for(i=i2;i<=y;i++) d[++k]=a[i];
}
void sort(long x,long y){
if(x!=y){
long m=(x+y)/2;
sort(x,m);
sort(m+1,y);
inter(x,m,y);
}
}
int main(){
FILE *f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&d[i]);
sort(1,n);
for(i=1;i<=n;i++)
fprintf(g,"%ld ",d[i]);
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}