//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:
#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