Write a Program of Merge Sorting Algorithm in C.

MERGE SORT

#include<stdio.h>
#include<conio.h>
void merge(int[],int,int,int);
void part(int[],int,int);
main()
{
            int i,arr[100],n;
            printf("enter total no of element:");
            scanf("%d",&n);
            for(i=0;i<n;i++)
            {
                        printf("enter arr[%d]:",i);
                        scanf("%d",&arr[i]);
            }
            part(arr,0,n-1);
            printf("sorted using maerge sort:");
            for(i=0;i<n;i++)
            {
                        printf("%d",arr[i]);
            }
            getch();
}
void part(int arr[],int min,int max)
{
            int mid;
            if (min<max)
            {
                        mid=(min+max)/2;
                        part(arr,min,mid);
                        part(arr,mid+1,max);
                        merge(arr,min,mid,max);
            }
}
void merge(int arr[],int min,int mid,int max)
{
            int tmp[30];
            int i,j,k,m,n;
            i=min;
            j=min;
            m=mid+1;
            while((j<=mid)&&(m<=max))
            {
                        if(arr[j]<=arr[m])
                        {
                                    tmp[i]=arr[j];
                                    j++;
                        }
                        else
                        {
                                    tmp[i]=arr[m];
                                    m++;
                        }
                        i++;
            }
                        if(j>mid)
                        {
                                    for(k=m;k<=max;k++)
                                    {
                                                tmp[i]=arr[k];
                                                i++;
                                    }
                        }
                        else
                        {
                                    for(k=j;k<=mid;k++)
                                    {
                                                tmp[i]=arr[k];
                                                i++;
                                    }
                        }
            for(k=min;k<=max;k++)
            {
            arr[k]=tmp[k];
            }
}

OUTPUT


No comments:

Post a Comment