Skip to content

Commit 71bc4b7

Browse files
committed
add merge sort
1 parent 15a9929 commit 71bc4b7

2 files changed

Lines changed: 47 additions & 1 deletion

File tree

src/main/java/sort/MergeSort.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package sort;
2+
3+
import java.util.Arrays;
4+
5+
public class MergeSort {
6+
public static int[] mergeSort(int[] arr) {
7+
if (arr == null || arr.length < 2) {
8+
return arr;
9+
}
10+
11+
int mid = arr.length / 2;
12+
int[] left = mergeSort(Arrays.copyOfRange(arr, 0, mid));
13+
int[] right = mergeSort(Arrays.copyOfRange(arr, mid, arr.length));
14+
15+
return merge(left, right);
16+
}
17+
18+
public static int[] merge(int[] left, int[] right) {
19+
int[] result = new int[left.length + right.length];
20+
21+
int i = 0, j = 0;
22+
for (int index = 0; index < result.length; index++) {
23+
if (i >= left.length) {
24+
result[index] = right[j++];
25+
} else if (j >= right.length) {
26+
result[index] = left[i++];
27+
} else if (left[i] < right[j]) {
28+
result[index] = left[i++];
29+
} else {
30+
result[index] = right[j++];
31+
}
32+
}
33+
return result;
34+
}
35+
}

src/test/java/SortTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import org.junit.Test;
2+
import sort.MergeSort;
23
import sort.QuickSort;
34

45
public class SortTest {
@@ -12,6 +13,16 @@ public void quickSortTest() {
1213
for (int i : ints) {
1314
System.out.println(i);
1415
}
15-
System.out.println(arr.toString());
16+
}
17+
18+
@Test
19+
public void mergeSortTest() {
20+
int[] arr = {10, 23, 2, 4, 5, 7, 24, 1};
21+
22+
int[] ints = MergeSort.mergeSort(arr);
23+
24+
for (int i : ints) {
25+
System.out.println(i);
26+
}
1627
}
1728
}

0 commit comments

Comments
 (0)