MergeSort Posted on 2020-03-29 | Edited on 2020-07-16 | Views: MergeSort: ref.1 1234567891011121314151617181920212223242526272829303132333435363738394041424344import java.util.*;public class MergeSort{ public static void merge(int[] a, int low, int mid, int high) { int[] tmp = new int[high - low + 1]; int i = low;// 左指针 int j = mid + 1;// 右指针 int k = 0; // 把较小的数先移到新数组中 while (i <= mid && j <= high) { if (a[i] < a[j]) tmp[k++] = a[i++]; else tmp[k++] = a[j++]; } // 把左边剩余的数移入数组 while (i <= mid) tmp[k++] = a[i++]; // 把右边边剩余的数移入数组 while (j <= high) tmp[k++] = a[j++]; // 把新数组中的数覆盖nums数组 for (int t = 0; t < tmp.length; t++) { a[t + low] = tmp[t]; } } public static void mergeSort(int[] a, int low, int high) { int mid = (low + high) / 2; if (low < high) { // 左边 mergeSort(a, low, mid); // 右边 mergeSort(a, mid + 1, high); // 左右归并 merge(a, low, mid, high); } } //********************************************* public static void main(String[] args) { int[] a= { 51, 46, 20, 18, 65, 97, 82, 30, 77, 50 }; System.out.println("before sorting: " + Arrays.toString(a)); mergeSort(a, 0, a.length - 1); System.out.println("after sorting: " + Arrays.toString(a)); }}