MCPcopy Index your code
hub / github.com/hustcc/JS-Sorting-Algorithm / MergeSort

Class MergeSort

src/java/main/MergeSort.java:6–50  ·  view source on GitHub ↗

归并排序

Source from the content-addressed store, hash-verified

4 * 归并排序
5 */
6public class MergeSort implements IArraySort {
7
8 @Override
9 public int[] sort(int[] sourceArray) throws Exception {
10 // 对 arr 进行拷贝,不改变参数内容
11 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
12
13 if (arr.length < 2) {
14 return arr;
15 }
16 int middle = (int) Math.floor(arr.length / 2);
17
18 int[] left = Arrays.copyOfRange(arr, 0, middle);
19 int[] right = Arrays.copyOfRange(arr, middle, arr.length);
20
21 return merge(sort(left), sort(right));
22 }
23
24 protected int[] merge(int[] left, int[] right) {
25 int[] result = new int[left.length + right.length];
26 int l = 0, r = 0, len = 0;
27 while (len < left.length + right.length) {
28 if (left[l] <= right[r]) {
29 result[len++] = left[l++];
30
31 if (l == left.length) {
32 for (int i = r; i < right.length; i++) {
33 result[len++] = right[r++];
34 }
35 }
36 } else {
37 result[len++] = right[r++];
38
39 if (r == right.length) {
40 for (int i = l; i < left.length; i++) {
41 result[len++] = left[l++];
42 }
43 }
44 }
45 }
46
47 return result;
48 }
49
50}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected