C program to implement Merge Sort

//C program to implement Merge Sort
#include<stdio.h>
#include<conio.h>
#include<time.h>
void merge(int [],int,int,int);
void merge_sort(int[],int,int);
void main()
{
 int n,a[10],i;
 clock_t begin,end;
 clrscr();
 printf("\nEnter number of elements : ");
 scanf("%d",&n);
 printf("\nEnter %d elements : ",n);
 for(i=0;i<n;i++)
  scanf("%d",&a[i]);
 begin=clock();
 merge_sort(a,0,n-1);
 end=clock();
 printf("\nTime taken is  : %lf",(end-begin)/CLOCKS_PER_SEC);
 printf("\n\nSorted list : ");
 for(i=0;i<n;i++)
 printf("\t%d",a[i]);
 getch();
}
void merge_sort(int a[],int low,int high)
{
 int mid;
 delay(100);
 if(low>=high)
return;
 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 i=low,j=mid+1,k=low,b[10];
 while(i<=mid && j<=high)
 {
  if(a[i]<=a[j])
    b[k++]=a[i++];
  else
    b[k++]=a[j++];
 }
 while(i<=mid)
   b[k++]=a[i++];
 while(j<=high)
   b[k++]=a[j++];
 for(k=low;k<=high;k++)
   a[k]=b[k];
}

Output:



No comments:

Post a Comment