#include<stdio.h>

#define MAX 50

void mergeSort(int arr[], int low, int mid, int high);

void partition(int arr[], int low, int high);

int main()
{

    int merge[MAX], i, n;

    printf("Enter the total number of elements: ");
    scanf("%d", &n);

    printf("Enter the elements to be sorted : ");
    for (i = 0; i < n; i++)
    {
        scanf("%d", &merge[i]);
    }

    partition(merge, 0, n - 1);

    printf("After merge sorting elements are: ");
    for (i = 0; i < n; i++)
    {
        printf("%d ", merge[i]);
    }

    return 0;
}

void partition(int arr[], int low, int high)
{

    int mid;

    if (low < high)
    {
        mid = (low + high) / 2;
        partition(arr, low, mid);
        partition(arr, mid + 1, high);
        mergeSort(arr, low, mid, high);
    }
}

void mergeSort(int arr[], int low, int mid, int high)
{

    int i, m, k, l, temp[MAX];

    l = low;
    i = low;
    m = mid + 1;

    while ((l <= mid) && (m <= high))
    {

        if (arr[l] <= arr[m])
        {
            temp[i] = arr[l];
            l++;
        }
        else
        {
            temp[i] = arr[m];
            m++;
        }
        i++;
    }

    if (l > mid)
    {
        for (k = m; k <= high; k++)
        {
            temp[i] = arr[k];
            i++;
        }
    }
    else
    {
        for (k = l; k <= mid; k++)
        {
            temp[i] = arr[k];
            i++;
        }
    }

    for (k = low; k <= high; k++)
    {
        arr[k] = temp[k];
    }
}

Output:-

Enter the total number of elements: 5
Enter the elements to be sorted : 2
4
6
1
5
After merge sorting elements are: 1 2 4 5 6

Post a Comment

If you have any doubts, Please let me know
Thanks!

Previous Post Next Post