#include <stdio.h>

void mergeSort(int arr[], int n) {
    if (n > 1) {
        int mid = n / 2;
        int L[mid], R[n - mid];

        for (int i = 0; i < mid; i++)
            L[i] = arr[i];
        for (int i = mid; i < n; i++)
            R[i - mid] = arr[i];

        mergeSort(L, mid);
        mergeSort(R, n - mid);

        int i = 0, j = 0, k = 0;
        while (i < mid && j < n - mid) {
            if (L[i] < R[j])
                arr[k++] = L[i++];
            else
                arr[k++] = R[j++];
        }

        while (i < mid)
            arr[k++] = L[i++];
        while (j < n - mid)
            arr[k++] = R[j++];
    }
}

int main() {
    int arr[] = {12, 11, 13, 5, 6, 7};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("Given array is \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");

    mergeSort(arr, n);

    printf("Sorted array is \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");

    return 0;
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: