Cod sursa(job #1414968)

Utilizator rosca.mirelaRosca Mirela Mihaela rosca.mirela Data 3 aprilie 2015 13:44:15
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
#include<stdio.h>
#include<stdlib.h>


int a[500005],c[500005];int n ;

void interclasare(int sta, int dra ,int stb,int drb,  int a[], int b[], int c[])
{ int i=sta,j=stb,k=-1;
  while(i<=dra && j<=drb)
  { if(a[i]<b[j])
{k++; c[k]=a[i];i++;}
else
{k++;c[k]=b[j];j++;}
  }
  while(j<=drb)
  {
      k++; c[k]=b[j];j++; }

  while(i<=dra)
  {
      k++;c[k]=a[i];i++;
  }


}

void mergesort(int st , int dr , int a[])
{ if (st>=dr) return ;
int mijl=(st+dr)/2;
mergesort(st,mijl,a);
mergesort(mijl+1, dr, a);
interclasare(st, mijl , mijl+1, dr, a, a, c);
int i,j=st;
for(i=0;i<dr-st+1;i++)
{
    a[j]=c[i];
    j++;
}



}

int main (){FILE *f=fopen("algsort.in", "r");
FILE *g=fopen("algsort.our", "w");
int n,i ;
fscanf(f ,"%d", &n);
for(i=0;i<n;i++)
    fscanf(f,"%d", &a[i]);
mergesort(0,n-1,a);
for(i=0;i<n;i++)
    fprintf(g," %d", a[i]);


return 0;
}