Skip to content

Commit f90cbd6

Browse files
committed
MergeSort
1 parent f6798da commit f90cbd6

File tree

2 files changed

+47
-45
lines changed

2 files changed

+47
-45
lines changed

src/main/java/leetcode/sort/MergeSort.java

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,76 @@
11
package leetcode.sort;
22

33
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++];
1111
}
1212
}
13-
if(i<=l1){
14-
temp[k++]=arr[i++];
13+
if (i <= l1) {
14+
temp[k++] = arr[i++];
1515
}
16-
if(j<=l2){
17-
temp[k++]=arr[j++];
16+
if (j <= l2) {
17+
temp[k++] = arr[j++];
1818
}
1919
}
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);
2627
}
2728
}
2829

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);
3536

3637

3738
}
3839
}
3940

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];
4546

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];
4849
}
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];
5152
}
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];
5960
i++;
60-
}else{
61-
arr[k]=arr2[j];
61+
} else {
62+
arr[k] = arr2[j];
6263
j++;
6364
}
6465
}
6566
}
67+
6668
public static void main(String[] args) {
6769
int[] arr = {49, 38, 65, 97, 76, 13, 27, 49};
68-
int[] result=new int[arr.length];
70+
int[] result = new int[arr.length];
6971
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);
7274
for (int num : arr) {
7375
System.out.println(num);
7476

src/main/java/offer/list/MergeTwoSortedList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class MergeTwoSortedList {
77
public ListNode Merge(ListNode list1, ListNode list2) {
88
ListNode p = list1, q = list2;
9-
ListNode head = new ListNode(-1);
9+
ListNode head = new ListNode(-1);//this is a trick
1010
ListNode tail = head;
1111

1212
while (p != null && q != null) {

0 commit comments

Comments
 (0)