|
1 | 1 | package leetcode.sort; |
2 | 2 |
|
3 | 3 | public class MergeSort { |
4 | | - public void merge(int[] arr,int[] temp,int i,int l1,int l2){ |
5 | | - int k,j; |
6 | | - for(k=i, j=l1+1;i<=l1&&j<=l2; k++){ |
7 | | - if(arr[i]<=arr[j]){ |
8 | | - temp[k]=arr[i++]; |
9 | | - }else{ |
10 | | - temp[k]=arr[j++]; |
| 4 | + public void merge(int[] arr, int[] temp, int i, int l1, int l2) { |
| 5 | + int k, j; |
| 6 | + for (k = i, j = l1 + 1; i <= l1 && j <= l2; k++) { |
| 7 | + if (arr[i] <= arr[j]) { |
| 8 | + temp[k] = arr[i++]; |
| 9 | + } else { |
| 10 | + temp[k] = arr[j++]; |
11 | 11 | } |
12 | 12 | } |
13 | | - if(i<=l1){ |
14 | | - temp[k++]=arr[i++]; |
| 13 | + if (i <= l1) { |
| 14 | + temp[k++] = arr[i++]; |
15 | 15 | } |
16 | | - if(j<=l2){ |
17 | | - temp[k++]=arr[j++]; |
| 16 | + if (j <= l2) { |
| 17 | + temp[k++] = arr[j++]; |
18 | 18 | } |
19 | 19 | } |
20 | | - public void mergeSort(int[] arr,int[] result,int start,int end){ |
21 | | - if(start<end){ |
22 | | - int m=(start+end)/2; |
23 | | - mergeSort(arr,result,start,m); |
24 | | - mergeSort(arr,result,m+1,end); |
25 | | - merge(arr,result,start,m,end); |
| 20 | + |
| 21 | + public void mergeSort(int[] arr, int[] result, int start, int end) { |
| 22 | + if (start < end) { |
| 23 | + int m = (start + end) / 2; |
| 24 | + mergeSort(arr, result, start, m); |
| 25 | + mergeSort(arr, result, m + 1, end); |
| 26 | + merge(arr, result, start, m, end); |
26 | 27 | } |
27 | 28 | } |
28 | 29 |
|
29 | | - public static void mergeSort1(int[] arr,int p,int r){ |
30 | | - if(p<r){ |
31 | | - int q=(p+r)/2; |
32 | | - mergeSort1(arr,p,q); |
33 | | - mergeSort1(arr,q+1,r); |
34 | | - merge1(arr,p,q,r); |
| 30 | + public static void mergeSort1(int[] arr, int p, int r) { |
| 31 | + if (p < r) { |
| 32 | + int q = (p + r) / 2; |
| 33 | + mergeSort1(arr, p, q); |
| 34 | + mergeSort1(arr, q + 1, r); |
| 35 | + merge1(arr, p, q, r); |
35 | 36 |
|
36 | 37 |
|
37 | 38 | } |
38 | 39 | } |
39 | 40 |
|
40 | | - public static void merge1(int[] arr,int p,int q,int r){ |
41 | | - int n1=q-p+1; |
42 | | - int n2=r-q; |
43 | | - int [] arr1=new int [n1+1]; |
44 | | - int [] arr2=new int [n2+1]; |
| 41 | + public static void merge1(int[] arr, int p, int q, int r) { |
| 42 | + int n1 = q - p + 1; |
| 43 | + int n2 = r - q; |
| 44 | + int[] arr1 = new int[n1 + 1]; |
| 45 | + int[] arr2 = new int[n2 + 1]; |
45 | 46 |
|
46 | | - for(int i=0;i<n1;i++){ |
47 | | - arr1[i]=arr[p+i]; |
| 47 | + for (int i = 0; i < n1; i++) { |
| 48 | + arr1[i] = arr[p + i]; |
48 | 49 | } |
49 | | - for(int j=0;j<n2;j++){ |
50 | | - arr2[j]=arr[q+1+j]; |
| 50 | + for (int j = 0; j < n2; j++) { |
| 51 | + arr2[j] = arr[q + 1 + j]; |
51 | 52 | } |
52 | | - arr1[n1]=Integer.MAX_VALUE; |
53 | | - arr2[n2]=Integer.MAX_VALUE; |
54 | | - int i=0; |
55 | | - int j=0; |
56 | | - for(int k=p;k<=r;k++){ |
57 | | - if(arr1[i]<arr2[j]){ |
58 | | - arr[k]=arr1[i]; |
| 53 | + arr1[n1] = Integer.MAX_VALUE; |
| 54 | + arr2[n2] = Integer.MAX_VALUE; |
| 55 | + int i = 0; |
| 56 | + int j = 0; |
| 57 | + for (int k = p; k <= r; k++) { |
| 58 | + if (arr1[i] < arr2[j]) { |
| 59 | + arr[k] = arr1[i]; |
59 | 60 | i++; |
60 | | - }else{ |
61 | | - arr[k]=arr2[j]; |
| 61 | + } else { |
| 62 | + arr[k] = arr2[j]; |
62 | 63 | j++; |
63 | 64 | } |
64 | 65 | } |
65 | 66 | } |
| 67 | + |
66 | 68 | public static void main(String[] args) { |
67 | 69 | int[] arr = {49, 38, 65, 97, 76, 13, 27, 49}; |
68 | | - int[] result=new int[arr.length]; |
| 70 | + int[] result = new int[arr.length]; |
69 | 71 | MergeSort qs = new MergeSort(); |
70 | | - qs.mergeSort1(arr, 0, arr.length-1 ); |
71 | | - qs.mergeSort(arr, result,0, arr.length-1 ); |
| 72 | + qs.mergeSort1(arr, 0, arr.length - 1); |
| 73 | + qs.mergeSort(arr, result, 0, arr.length - 1); |
72 | 74 | for (int num : arr) { |
73 | 75 | System.out.println(num); |
74 | 76 |
|
|
0 commit comments