Cod sursa(job #1066662)

Utilizator NCodeMihai X NCode Data 25 decembrie 2013 13:01:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[500008],n;

void merge(int,int,int);

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

void merge(int low,int mid,int high)
{
  int h,i,j,b[500008],k;
  h=low;
  i=low;
  j=mid+1;

  while((h<=mid)&&(j<=high))
  {
    if(a[h]<=a[j])
    {
      b[i]=a[h];
      h++;
    }
    else
    {
      b[i]=a[j];
      j++;
    }
    i++;
  }
  if(h>mid)
  {
    for(k=j;k<=high;k++)
    {
      b[i]=a[k];
      i++;
    }
  }
  else
  {
    for(k=h;k<=mid;k++)
    {
      b[i]=a[k];
      i++;
    }
  }
  for(k=low;k<=high;k++) a[k]=b[k];
}

int main()
{


   ifstream in ("algsort.in");
  ofstream out ("algsort.out");
 	in>>n;
  
    for(int i=1;i<=n;i++)
    {
      in>>a[i] ;
    }
    merge_sort(1,n);
    

    for(int i=1;i<=n;i++)
      out<<a[i]<<"  ";
      

    return 0;

}