Pagini recente » Cod sursa (job #1789040) | Cod sursa (job #723744) | Cod sursa (job #1762884) | Premiile preONI 2006 | Cod sursa (job #1259636)
#include <stdio.h>
#include <stdlib.h>
int n,x[100];
void interclas(int i,int m,int j)
{
int y[100],a=i,k=1,b=m+1;
while(a<=m && b<=j)
if (x[a]<x[b])
y[k++]=x[a++];
else
y[k++]=x[b++];
while (a<=m)
y[k++]=x[a++];
while (b<=j)
y[k++]=x[b++];
int t=i;
for (k=1;k<=(j-i)+1;k++)
x[t++]=y[k];
}
void mergesort(int left,int right)
{
if (left<right)
{
int mij=(left+right)/2;
mergesort(left,mij);
mergesort(mij+1,right);
interclas(left,mij,right);
}
}
int main()
{ int i;
FILE *f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&x[i]);
mergesort(1,n);
for (i=1;i<=n;i++)
fprintf(g,"%d ",x[i]);
fclose(f);
fclose(g);
return 0;
}