Merge sort

#include <stdio.h>

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

void mergeSort(int a[], int lb, int ub)
 {
    if (lb < ub) 
{
        int mid = (lb + ub) / 2;
        mergeSort(a, lb, mid);
        mergeSort(a, mid + 1, ub);
        merge(a, lb, mid, ub);
    }
}

int main()
 {
    int a[100], n, i;
    printf("Enter number of elements: ");
    scanf("%d", &n);
    printf("Enter %d elements: ", n);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    mergeSort(a, 0, n - 1);
    printf("\nSorted array: ");
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
    return 0;
}

Comments

Popular posts from this blog

SINGLE LINKED LIST by smd

CLL by smd

QUEUE USING ARRAYS by smd