File tree 1 file changed +50
-0
lines changed
1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .Scanner ;
2
+
3
+ public class MergeSort {
4
+ public static void main (String [] args ) {
5
+ Scanner sc = new Scanner (System .in );
6
+ int n = sc .nextInt ();
7
+ int [] arr = new int [n ];
8
+ for (int i =0 ;i <n ;i ++) arr [i ] = sc .nextInt ();
9
+ mergeSort (arr ,0 ,n -1 );
10
+ for (int i :arr ) System .out .print (i + "," );
11
+ System .out .println ();
12
+ }
13
+ public static void mergeSort (int [] arr ,int l ,int r ){
14
+ if (l < r ){
15
+ int m = (l +r )/2 ;
16
+ mergeSort (arr , l , m );
17
+ mergeSort (arr , m +1 , r );
18
+ merge (arr ,l ,m ,r );
19
+ }
20
+ }
21
+ public static void merge (int [] arr ,int l ,int m ,int r ){
22
+ int n1 = m - l + 1 ;
23
+ int n2 = r -m ;
24
+ int [] left = new int [n1 ];
25
+ int [] right = new int [n2 ];
26
+
27
+ for (int i =0 ;i <n1 ;i ++) left [i ] = arr [l + i ];
28
+ for (int i =0 ;i <n2 ;i ++) right [i ] = arr [m + i + 1 ];
29
+
30
+ int i = 0 , j = 0 ,k = l ;
31
+ while (i < n1 && j < n2 ){
32
+ if (left [i ] < right [j ]){
33
+ arr [k ] = left [i ];
34
+ i ++;k ++;
35
+ }
36
+ else {
37
+ arr [k ] = right [j ];
38
+ j ++;k ++;
39
+ }
40
+ }
41
+ while (i < n1 ){
42
+ arr [k ] = left [i ];
43
+ i ++;k ++;
44
+ }
45
+ while (j < n2 ){
46
+ arr [k ] = right [j ];
47
+ j ++;k ++;
48
+ }
49
+ }
50
+ }
You can’t perform that action at this time.
0 commit comments