Cod sursa(job #1259636)

Utilizator andy1995Antone Andreas andy1995 Data 10 noiembrie 2014 11:57:08
Problema Sortare prin comparare Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
#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;
}