1
+ /* Java program for Merge Sort */
2
+ class MergeSort
3
+ {
4
+ // Merges two subarrays of arr[].
5
+ // First subarray is arr[l..m]
6
+ // Second subarray is arr[m+1..r]
7
+ void merge (int arr [], int l , int m , int r )
8
+ {
9
+ // Find sizes of two subarrays to be merged
10
+ int n1 = m - l + 1 ;
11
+ int n2 = r - m ;
12
+
13
+ /* Create temp arrays */
14
+ int L [] = new int [n1 ];
15
+ int R [] = new int [n2 ];
16
+
17
+ /*Copy data to temp arrays*/
18
+ for (int i =0 ; i <n1 ; ++i )
19
+ L [i ] = arr [l + i ];
20
+ for (int j =0 ; j <n2 ; ++j )
21
+ R [j ] = arr [m + 1 + j ];
22
+
23
+
24
+ /* Merge the temp arrays */
25
+
26
+ // Initial indexes of first and second subarrays
27
+ int i = 0 , j = 0 ;
28
+
29
+ // Initial index of merged subarry array
30
+ int k = l ;
31
+ while (i < n1 && j < n2 )
32
+ {
33
+ if (L [i ] <= R [j ])
34
+ {
35
+ arr [k ] = L [i ];
36
+ i ++;
37
+ }
38
+ else
39
+ {
40
+ arr [k ] = R [j ];
41
+ j ++;
42
+ }
43
+ k ++;
44
+ }
45
+
46
+ /* Copy remaining elements of L[] if any */
47
+ while (i < n1 )
48
+ {
49
+ arr [k ] = L [i ];
50
+ i ++;
51
+ k ++;
52
+ }
53
+
54
+ /* Copy remaining elements of R[] if any */
55
+ while (j < n2 )
56
+ {
57
+ arr [k ] = R [j ];
58
+ j ++;
59
+ k ++;
60
+ }
61
+ }
62
+
63
+ // Main function that sorts arr[l..r] using
64
+ // merge()
65
+ void sort (int arr [], int l , int r )
66
+ {
67
+ if (l < r )
68
+ {
69
+ // Find the middle point
70
+ int m = (l +r )/2 ;
71
+
72
+ // Sort first and second halves
73
+ sort (arr , l , m );
74
+ sort (arr , m +1 , r );
75
+
76
+ // Merge the sorted halves
77
+ merge (arr , l , m , r );
78
+ }
79
+ }
80
+
81
+ /* A utility function to print array of size n */
82
+ static void printArray (int arr [])
83
+ {
84
+ int n = arr .length ;
85
+ for (int i =0 ; i <n ; ++i )
86
+ System .out .print (arr [i ] + " " );
87
+ System .out .println ();
88
+ }
89
+
90
+ // Driver method
91
+ public static void main (String args [])
92
+ {
93
+ int arr [] = {12 , 11 , 13 , 5 , 6 , 7 };
94
+
95
+ System .out .println ("Given Array" );
96
+ printArray (arr );
97
+
98
+ MergeSort ob = new MergeSort ();
99
+ ob .sort (arr , 0 , arr .length -1 );
100
+
101
+ System .out .println ("\n Sorted array" );
102
+ printArray (arr );
103
+ }
104
+ }
0 commit comments