1
+ package com .algorithm .sorting ;
2
+
3
+ import java .util .Arrays ;
4
+
5
+ public class MergeSort {
6
+ public static void main (String [] args ) {
7
+ int array [] = {90 ,23 ,101 ,45 ,65 ,23 ,67 ,89 ,34 ,23 };
8
+ System .out .println ("Before Sorting :: " +Arrays .toString (array ));
9
+ sort (array ,0 ,array .length -1 );
10
+ System .out .println ("After Sorting :: " +Arrays .toString (array ));
11
+ }
12
+
13
+ public static void mergeSort (int array [], int leftIndex , int midIndex , int rightIndex ) {
14
+ int n1 = midIndex - leftIndex + 1 ;
15
+ int n2 = rightIndex - midIndex ;
16
+
17
+ int leftArray [] = new int [n1 ];
18
+ int rightArray [] = new int [n2 ];
19
+
20
+ for (int i = 0 ; i < n1 ; ++i )
21
+ leftArray [i ] = array [leftIndex + i ];
22
+ for (int j = 0 ; j < n2 ; ++j )
23
+ rightArray [j ] = array [midIndex + 1 + j ];
24
+
25
+ int i = 0 , j = 0 ;
26
+ int k = leftIndex ;
27
+ while (i < n1 && j < n2 ) {
28
+ if (leftArray [i ] <= rightArray [j ]) {
29
+ array [k ] = leftArray [i ];
30
+ i ++;
31
+ } else {
32
+ array [k ] = rightArray [j ];
33
+ j ++;
34
+ }
35
+ k ++;
36
+ }
37
+
38
+ while (i < n1 ) {
39
+ array [k ] = leftArray [i ];
40
+ i ++;
41
+ k ++;
42
+ }
43
+ while (j < n2 ) {
44
+ array [k ] = rightArray [j ];
45
+ j ++;
46
+ k ++;
47
+ }
48
+ }
49
+
50
+ public static void sort (int array [], int leftIndex , int rightIndex ) {
51
+ if (leftIndex < rightIndex ) {
52
+ int midIndex = (leftIndex + rightIndex ) / 2 ;
53
+ sort (array , leftIndex , midIndex );
54
+ sort (array , midIndex + 1 , rightIndex );
55
+ mergeSort (array , leftIndex , midIndex , rightIndex );
56
+ }
57
+ }
58
+ }
0 commit comments