DS – Merge Sort Program

#include<stdio.h>
#include<conio.h>
void array_partition(int[], int, int);
void merge_sort(int[],int,int,int);
int main()
{
            int arr[50] , n , i ;
            clrscr();
            printf(“Enter number of elements : “);
            scanf(“%d”, &n);
 
            for( i=0 ; i<n ; i++ )
            {
                        arr[i] = rand()%32767 ;
            }
 
            printf(“Array elements before sort : \n”);
            for( i=0 ; i<n ; i++ )
            {
                        printf(“%d\t”,arr[i]);
            }
            printf(“\n\n”);
 
            array_partition(arr,0,n-1);
 
            printf(“Array elements after sort : \n”);
            for( i=0 ; i<n ; i++ )
            {
                        printf(“%d\t”, arr[i]);
            }
            printf(“\n\n”);
            return 0;
}
 
void array_partition(int arr[], int low, int high)
{
            int mid;
            if(low<high)
            {
                        mid=(low+high)/2;
                        array_partition(arr,low,mid);
                        array_partition(arr,mid+1,high);
                        merge_sort(arr,low,mid,high);
            }
}
 
void merge_sort(int arr[],int low,int mid,int high)
{
            int i,j,k,l,b[20];
            l=low;
            i=low;
            j=mid+1;
            while((l<=mid)&&(j<=high))
            {
                        if(arr[l]<=arr[j])
                        {
                                    b[i]=arr[l];
                                    l++;
                        }
                        else
                        {
                                    b[i]=arr[j];
                                    j++;
                        }
                        i++;
            }
            if(l>mid)
            {
                        for(k=j;k<=high;k++)
                        {
                        b[i]=arr[k];
                        i++;
                        }
            }
            else
            {
                        for(k=l;k<=mid;k++)
                        {
                        b[i]=arr[k];
                                    i++;
                        }
            }
            for(k=low;k<=high;k++)
            {
                        arr[k]=b[k];
            }
}
Scroll to Top