PROGRAM:
#include<stdio.h>
#include<conio.h>
int a[20],temp[20];
void mergesort(int a[],int temp[],int n);
void msort(int a[],int temp[],int left,int right);
void merge(int a[],int temp[],int left,int center,int right);
void main()
{
int i,n;
clrscr();
printf("$$$ MERGE SORT $$$");
printf("\nEnter the array limit:");
scanf("%d",&n);
printf("Enter array elements:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
mergesort(a,temp,n);
printf("The Sorted elements are:\t");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
getch();
}
void mergesort(int a[],int temp[],int n)
{
msort(a,temp,0,n-1);
}
void msort(int a[],int temp[],int left,int right)
{
int center;
if(left<right)
{
center=(left+right)/2;
msort(a,temp,left,center);
msort(a,temp,center+1,right);
merge(a,temp,left,center+1,right);
}
}
void merge(int a[],int temp[],int left,int center,int right)
{
int i,left_end,num_elements,tmp_pos;
left_end=center-1;
tmp_pos=left;
num_elements=right-left+1;
while((left<=left_end)&&(center<=right))
{
if(a[left]<=a[center])
{
temp[tmp_pos]=a[left];
tmp_pos++;
left++;
}
else
{
temp[tmp_pos]=a[center];
tmp_pos++;
center++;
}
}
while(left<=left_end)
{
temp[tmp_pos]=a[left];
left++;
tmp_pos++;
}
while(center<=right)
{
temp[tmp_pos]=a[center];
center++;
tmp_pos++;
}
for(i=0;i<=num_elements;i++)
{
a[right]=temp[right];
right--;
}
}
OUTPUT:
$$$ MERGE SORT $$$
Enter the array limit: 8
Enter array elements: 40 20 70 14 60 61 97 30
The Sorted elements are: 14 20 30 40 60 61 70 97
#include<stdio.h>
#include<conio.h>
int a[20],temp[20];
void mergesort(int a[],int temp[],int n);
void msort(int a[],int temp[],int left,int right);
void merge(int a[],int temp[],int left,int center,int right);
void main()
{
int i,n;
clrscr();
printf("$$$ MERGE SORT $$$");
printf("\nEnter the array limit:");
scanf("%d",&n);
printf("Enter array elements:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
mergesort(a,temp,n);
printf("The Sorted elements are:\t");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
getch();
}
void mergesort(int a[],int temp[],int n)
{
msort(a,temp,0,n-1);
}
void msort(int a[],int temp[],int left,int right)
{
int center;
if(left<right)
{
center=(left+right)/2;
msort(a,temp,left,center);
msort(a,temp,center+1,right);
merge(a,temp,left,center+1,right);
}
}
void merge(int a[],int temp[],int left,int center,int right)
{
int i,left_end,num_elements,tmp_pos;
left_end=center-1;
tmp_pos=left;
num_elements=right-left+1;
while((left<=left_end)&&(center<=right))
{
if(a[left]<=a[center])
{
temp[tmp_pos]=a[left];
tmp_pos++;
left++;
}
else
{
temp[tmp_pos]=a[center];
tmp_pos++;
center++;
}
}
while(left<=left_end)
{
temp[tmp_pos]=a[left];
left++;
tmp_pos++;
}
while(center<=right)
{
temp[tmp_pos]=a[center];
center++;
tmp_pos++;
}
for(i=0;i<=num_elements;i++)
{
a[right]=temp[right];
right--;
}
}
$$$ MERGE SORT $$$
Enter the array limit: 8
Enter array elements: 40 20 70 14 60 61 97 30
The Sorted elements are: 14 20 30 40 60 61 70 97
No comments:
Post a Comment