Cod sursa(job #800051)

Utilizator chimistuFMI Stirb Andrei chimistu Data 20 octombrie 2012 17:18:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <cstdio>
#include <cstdlib>


int n,a[500000];
FILE*f;
FILE*g;
void merge(int st,int dr,int mij)
{
     int i,j,q,p;
     int b[500000];
     i=st;
     q=i;
     j=mij+1;
     while ((i<=mij) && (j<=dr))
     {
           if (a[i]>a[j])
               {b[q]=a[j];
               j++;
               }
            else
                {
                    b[q]=a[i];
                    i++;}
            q++;
     }                  
      while (i<=mij)
      {
            b[q]=a[i];
            i++;q++;}
      while (j<=dr)
      {
            b[q]=a[j];
            j++;q++;}
      for (p=st;p<=dr;p++)
         a[p]=b[p];

}               
void sortare(int st,int dr)
{
    int mij;
    if (st<dr)
    {
        mij=(st+dr)/2;
        sortare (st,mij);
        sortare (mij+1,dr);
        merge(st,dr,mij);}
}
        
int main()
{
    f=fopen ("algsort.in","r");
    g=fopen ("algsort.out","w");
    int i;
    fscanf(f,"%d",&n);
    for (i=1;i<=n;i++)
        fscanf(f,"%d",&a[i]);
   sortare(1,n);
   for (i=1;i<=n;i++)
        fprintf(g,"%d ",a[i]);
    system("pause");
    return 0;
}