Cod sursa(job #770258)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 22 iulie 2012 15:59:00
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
using namespace std;

int n, a[500001],i;

void merge(int, int, int); 
void mergesort(int low, int high)
{int middle;
 if(low<high)
  {middle=(low+high)/2;
   mergesort(low, middle);
   mergesort(middle+1,high);
   merge(low,middle,high);
   }
}

void merge(int low, int middle, int high)
{int j,k,aux,b[500001],nb;
 j=low; k=middle+1;  nb=low-1;   
 while(j<=middle && k<=high)
   {nb++;
    if(a[j]>a[k])
      {b[nb]=a[k];
       k++;}
    else
      {b[nb]=a[j];
       j++;}
    }
 int t;      
 if(j>middle)
   {for(t=k; t<=high; t++)
      {nb++;
       b[nb]=a[t];}
   }
 else
   {for(t=j; t<=middle; t++)   
      {nb++;
       b[nb]=a[t];}
   }         
         
         
   for(t=low; t<=high; t++)
     a[t]=b[t];      
}                 
 
   

int main()
{ifstream f("mergesort.in");
ofstream g("mergesort.out");
f>>n;
for(i=1; i<=n; i++)
  f>>a[i];
  

mergesort(1,n);

for(i=1; i<=n; i++)
 g<<a[i]<<" ";
 g<<endl;

f.close();
g.close();
return 0;}