File tree 1 file changed +67
-0
lines changed
1 file changed +67
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments