Pages

Sunday, February 7, 2016

Merge Sort



#include<stdio.h>
#include<conio.h>
void merge_sort(int a[' '], int low, int high);
void merge(int a[' '], int low, int mid, int high);
void main()
{
  int a[20],n,i;
  clrscr();
  printf("Enter the number of elements: ");
  scanf("%d",&n);
  printf("\n Enter the numbers :");
  for(i=0;i<n;i++)
  scanf("%d",&a[i]);
  merge_sort(a,0,n-1);
  printf("\n The sorted elements are \n");
  for(i=0;i<n;i++)
  printf("%d\n",a[i]);
  getch();}
  void merge_sort(int a[' '], int low, int high)
  {     int mid;
     if(low < high)
     {
       mid=(low+high)/2;
       merge_sort(a, low, mid);
       merge_sort(a, mid+1, high);
       merge(a,low,mid,high);
     }   }
  void merge(int a[' '], int low, int mid, int high)
  {
    int c[20],i,j,k;
    i=low;
    j=mid+1;
    k=low;
    while((i<=mid)&&(j<=high))
     {
                        if(a[i]<a[j])
        {
          c[k]=a[i];
          k=k+1;
          i=i+1;
        }
         else
          {
             c[k]=a[j];
             k=k+1;
             j=j+1;          }        }

         while(i<=mid)
           {
              c[k]=a[i];
              k=k+1;
              i=i+1;            }
             while(j<=high)
              {
                c[k]=a[j];
                k=k+1;
                j=j+1;  }
              for(i=0;i<=k-1;i++)
                {                  a[i]=c[i];               
}
  }

No comments:

Post a Comment