Merge Sort with no of camparison and swap
On-campus and online computer science courses to Learn the basic concepts of Computer Science.This tutorial will cover c ,c++, java, data structure and algorithm,computer graphics,microprocessor,analysis of algorithms,Digital Logic Design and Analysis,computer architecture,computer networks,operating system.
code in C:#include<stdio.h>
int arr[100],temp[100],i,m,k,l,comparisons=0,exchanges=0,n,c,mid;
void mergeSort(int low,int mid,int high);
void partition(int low,int high);
int main()
{
printf("Enter number of elements: ");
scanf("%d",&n);
printf("Enter number: \n");
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
partition(0,n-1);
printf("Sorted list in ascending order:");
for(i=0;i<n;i++)
printf("%d ",arr[i]);
printf("\n\n no of comparisons: %d",comparisons);
printf("\n no of exchanges: %d",exchanges);
return 0;
}
int comp(int x, int y)
{ // is x < y ?
comparisons++;
return (x < y);
}
void partition(int low,int high){
if(low<high){
mid=(low+high)/2;
partition(low,mid);
partition(mid+1,high);
mergeSort(low,mid,high);
}
}
void mergeSort(int low,int mid,int high)
{
l=low;
i=low;
m=mid+1;
while((l<=mid)&&(m<=high))
{
if(comp(arr[l],arr[m])||(arr[l]==arr[m]) ) //comp function to compare
{
temp[i]=arr[l];
l++;
exchanges++;
}
else
{
temp[i]=arr[m];
m++;
exchanges++;
}
i++;
}
if(l>mid)
{
for(k=m;k<=high;k++)
{
temp[i]=arr[k];
i++;
exchanges++;
}
}
else
{
for(k=l;k<=mid;k++)
{
temp[i]=arr[k];
i++;
exchanges++;
}
}
for(k=low;k<=high;k++)
{
arr[k]=temp[k];
exchanges++;
}
}
output:-Enter number of elements: 5 Enter number: 29 21 64 20 56 Sorted list in ascending order:21 29 20 56 64 no of comparisons: 12 no of exchanges: 38 --------------------------------

0 comments: