废话少说直接贴代码吧
public class MergeSort {
public static void main(String[] args) {
int[] arr = { 5, 2, 4, 7, 1, 3, 9, 6 };
mergeSort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
}
private static void mergeSort(int[] arr2, int i, int j) {
int mid;
if (i < j) {
mid = (i + j) / 2;
mergeSort(arr2, i, mid);
mergeSort(arr2, mid + 1, j);
merge(arr2, i, mid, j);
} else
return;
}
private static void merge(int[] arr2, int low, int mid, int high) {
int n1 = mid - low + 1;
int n2 = high - mid;
int[] L = new int[n1 + 1];
int[] R = new int[n2 + 1];
for (int i = 0; i < n1; i++)
L[i] = arr2[low + i];
for (int i = 0; i < n2; i++)
R[i] = arr2[mid + i + 1];
L[n1] = (int) (Integer.MAX_VALUE);
R[n2] = (int) (Integer.MAX_VALUE);
int i = 0;
int j = 0;
for (int k = low; k <= high; k++)
if (L[i] > R[j])
arr2[k] = R[j++];
else
arr2[k] = L[i++];
}
}