merge.c
74 linesc
DOWNLOAD
1// Aim: Program to perform Merge Sort on an array.
2#include <stdio.h>
3int B[10];
4void printArray(int *A, int n)
5{
6    for (int i = 0; i < n; i++)
7    {
8        printf("%d ", A[i]);
9    }
10    printf("\n");
11}
12void merge(int A[], int mid, int low, int high)
13{
14    int i = low, j = mid + 1, k = low;
15    while (i <= mid && j <= high)
16    {
17        if (A[i] < A[j])
18        {
19            B[k] = A[i];
20            k++;
21            i++;
22        }
23        else
24        {
25            B[k] = A[j];
26            k++;
27            j++;
28        }
29    }
30    while (i <= mid)
31    {
32        B[k] = A[i];
33        k++;
34        i++;
35    }
36    while (j <= high)
37    {
38        B[k] = A[j];
39        k++;
40        j++;
41    }
42    for (int i = low; i <= high; i++)
43    {
44        A[i] = B[i];
45    }
46}
47
48void merge_sort(int *A, int low, int high)
49{
50    if (low < high)
51    {
52        int mid = (low + high) / 2;
53        merge_sort(A, low, mid);
54        merge_sort(A, mid + 1, high);
55        merge(A, mid, low, high);
56    }
57}
58
59int main()
60{
61   int n;
62printf("Enter the number of elements: ");
63scanf("%d", &n);
64int A[n];
65printf("Enter the elements: ");
66for (int i = 0; i < n; i++)
67{
68    scanf("%d", &A[i]);
69}
70merge_sort(A, 0, n - 1);
71printArray(A, n);
72return 0;
73}
74