1+ class MergeSort {
2+ void merge (int arr [], int left , int mid , int right ) {
3+
4+ int n1 = mid - left + 1 ;
5+ int n2 = right - mid ;
6+
7+ int Left [] = new int [n1 ];
8+ int Right [] = new int [n2 ];
9+
10+ for (int i = 0 ; i < n1 ; ++i )
11+ Left [i ] = arr [left + i ];
12+ for (int j = 0 ; j < n2 ; ++j )
13+ Right [j ] = arr [mid + 1 + j ];
14+
15+ int i = 0 , j = 0 ;
16+
17+ int k = left ;
18+ while (i < n1 && j < n2 ) {
19+ if (Left [i ] <= Right [j ]) {
20+ arr [k ] = Left [i ];
21+ i ++;
22+ }
23+ else {
24+ arr [k ] = Right [j ];
25+ j ++;
26+ }
27+ k ++;
28+ }
29+
30+ while (i < n1 ) {
31+ arr [k ] = Left [i ];
32+ i ++;
33+ k ++;
34+ }
35+
36+ while (j < n2 ) {
37+ arr [k ] = Right [j ];
38+ j ++;
39+ k ++;
40+ }
41+ }
42+
43+ void sort (int arr [], int left , int right ) {
44+ if (left < right ) {
45+ int mid = (left + right ) / 2 ;
46+
47+ sort (arr , left , mid );
48+ sort (arr , mid + 1 , right );
49+
50+ merge (arr , left , mid , right );
51+ }
52+ }
53+
54+ static void printArray (int arr []) {
55+ int n = arr .length ;
56+ for (int i = 0 ; i < n ; ++i )
57+ System .out .print (arr [i ] + " " );
58+ System .out .println ();
59+ }
60+
61+ public static void main (String args []) {
62+ int arr [] = { 90 , 30 , 5 , 3 , 15 };
63+ MergeSort mergedArr = new MergeSort ();
64+ System .out .println ("Merge Sorting" );
65+ System .out .print ("Data Sebelum di Sorting : " );
66+ for (int x = 0 ; x < 5 ; x ++)
67+ System .out .print (arr [x ]+" " );
68+ System .out .println ("" );
69+ mergedArr .sort (arr , 0 , arr .length - 1 );
70+ System .out .print ("Data Setelah di Sorting : " );
71+ printArray (arr );
72+ }
73+ }
0 commit comments