Saturday, 9 May 2015

Merge Sort

Increasing order:

void mergesort(int a[],int min,int max)
{
     int mid;
     if(min<max)
          {
                 mid=(min+max)/2;
                  mergesort(a,min,mid);
                  mergesort(a,mid+1,max);
                  merge(a,min,mid,max);
           }
}
void merge(int a[],int min,int mid,int max)
{


         int temp[20],i,j,k;
         i=min;
         j=mid+1;
         k=min;
        while(i<=mid &&j<=max)
          {
                    if(a[i]<a[j])
                        {
                               temp[k++]=a[i++];
                        }
                  else
                         {
                                temp[k++]=a[j++];
                          }
       }
     while(i<=mid)
       {
                  temp[k++]=a[i++];
      }
     while(j<=max)
      {
              temp[k++]=a[j++];
      }
     for(k=min;k<=max;k++)
         a[k]=temp[k];
}


No comments:

Post a Comment