Skip to main content

Merge Sort




#include <stdio.h>


int c[20];

void display(int ub)
{
    for (int k = 0; k < ub; k++)
    {
        printf(" %d ", c[k]);
    }
}

void merge(int a[],int lb, int mid, int ub){
    int i=lb;
    int j = mid+1;
    int k = 0;
    while(i<=mid && j <= ub){
        if(a[i]<=a[j]){
            c[k] = a[i];
            i++;
            k++;
        }
        else{
            c[k]=a[j];
            j++;
            k++;
        }
    }
    if(i>mid){
        while(j<=ub){
            c[k] = a[j];
            j++;
            k++;
        }
    }
    else{
        while(i<=mid){
            c[k] = a[i];
            i++;
            k++;
        }
    }

    for ( i = lb,k=0; i <=ub; i++,k++)
    {
        a[i]=c[k];
    }
   
}
void merge_sort(int a[],int lb, int ub){
    int mid;
    if(lb<ub){
        mid = (lb+ub)/2;
        merge_sort(a,lb,mid);
        merge_sort(a,mid+1,ub);
        merge(a,lb,mid,ub);
    }
}


int main()
{

    int i;
    int a[] = {15, 5, 24, 8, 1, 3, 16, 10, 20};
    int ub = sizeof(a) / sizeof(int);

    for (i = 0; i < ub; i++)
    {
        printf(" %d ", a[i]);
    }

    merge_sort(a, 0, ub - 1);

    printf("\n\n");
    printf("Displaying array element\n\n");

    display(ub);

    return 0;
}


Comments