要点:
代码
public class MergeSort {
public static void main(String[] args) {
int[] arr = new int[]{9, 5, 2, 7, 12, 4, 3, 1, 15, 11, 0, 12};
int[] temp = new int[arr.length];
ms(arr, temp, 0, arr.length - 1);
for (int i : arr) {
System.out.println(i);
}
}
static void ms(int[] arr, int[] temp, int l, int r) {
if (l < r) {
int m = (l + r) / 2;
ms(arr, temp, l, m);
ms(arr, temp, m + 1, r);
merge(arr, temp, l, m, r);
}
}
static void merge(int[] arr, int[] temp, int l, int m, int r) {
int li = l;
int ri = m + 1;
int p = l;
while (li <= m && ri <= r) {
if (arr[li] < arr[ri]) {
temp[p++] = arr[li++];
} else {
temp[p++] = arr[ri++];
}
}
while (li <= m) {
temp[p++] = arr[li++];
}
while (ri <= r) {
temp[p++] = arr[ri++];
}
while (l <= r) {
arr[l] = temp[l];
l++;
}
}
}