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