/*CSEMATTER.BLOGSPOT.IN
PROGRAM:C program to implement merge sort algorithm*/
#include<stdio.h>
#include<conio.h>
void mergesort(int[], int, int);
void merge(int[], int, int, int);
void main()
{
int n,i,arr[20];
clrscr();
printf("Enter the no. of elements of array");
scanf("%d",&n);
printf("Enter the elements of array");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
mergesort(arr,0,n-1);
printf("Sorted array is:");
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
getch();
}
void mergesort(int arr[],int p,int r)
{
int q;
if(p<r)
{
q=(p+r)/2;
mergesort(arr,p,q);
mergesort(arr,q+1,r);
merge(arr,p,q,r);
}
}
void merge(int arr[], int p, int q, int r)
{
int n1,n2,l[20],r1[20],i,j,k;
n1=q-p+1;
n2=r-q;
for(i=0;i<n1;i++)
{
l[i]=arr[p+i-1];
}
for(i=0;i<n2;i++)
{
r1[i]=arr[q+i];
}
l[n1]=1/0;
r1[n2]=1/0;
i=1;
j=1;
for(k=p;k<r;k++)
{
if(l[i]>r1[j])
{
arr[k]=l[i];
i++;
}
else
{
arr[k]=r1[j];
j++;
}
}
}
No comments:
Post a Comment