Skip to content

Commit f178b86

Browse files
merg_sort.c
1 parent 6629a4e commit f178b86

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

Diff for: merg_sort.c

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include <stdio.h>
2+
void merge(int arr[], int l, int m, int r)
3+
{
4+
int i, j, k;
5+
int n1 = m - l + 1;
6+
int n2 = r - m;
7+
int L[n1], R[n2];
8+
for (i = 0; i < n1; i++)
9+
L[i] = arr[l + i];
10+
for (j = 0; j < n2; j++)
11+
R[j] = arr[m + 1 + j];
12+
i = 0;
13+
j = 0;
14+
k = l;
15+
while (i < n1 && j < n2)
16+
{
17+
if (L[i] <= R[j])
18+
{
19+
arr[k] = L[i];
20+
i++;
21+
}
22+
else
23+
{
24+
arr[k] = R[j];
25+
j++;
26+
}
27+
k++;
28+
}
29+
while (i < n1)
30+
{
31+
arr[k] = L[i];
32+
i++;
33+
k++;
34+
}
35+
while (j < n2)
36+
{
37+
arr[k] = R[j];
38+
j++;
39+
k++;
40+
}
41+
}
42+
void mergeSort(int arr[], int l, int r)
43+
{
44+
if (l < r)
45+
{
46+
int m = l + (r - l) / 2;
47+
mergeSort(arr, l, m);
48+
mergeSort(arr, m + 1, r);
49+
merge(arr, l, m, r);
50+
}
51+
}
52+
int main()
53+
{
54+
int arr[100];
55+
int n;
56+
printf("Enter the number of elements: ");
57+
scanf("%d", &n);
58+
printf("Enter %d elements: ", n);
59+
for (int i = 0; i < n; i++)
60+
scanf("%d", &arr[i]);
61+
mergeSort(arr, 0, n - 1);
62+
printf("Sorted array: ");
63+
for (int i = 0; i < n; i++)
64+
printf("%d ", arr[i]);
65+
printf("\n");
66+
return 0;
67+
}

0 commit comments

Comments
 (0)