public void merge(int[] array, int low, int mid, int high) { int[] temp = new int[array.length]; int i = low; int j = mid + 1; int k = 0; while (i <= mid && j <= high) { if (array[i] < array[j]) { temp[k++] = array[i++]; } else { temp[k++] = array[j++]; } } while (i <= mid) { temp[k++] = array[i++]; } while (j <= high) { temp[k++] = array[j++]; } //复制temp数组中的数据到原来的数组当中 for (int x = 0; x < temp.length; x++) { array[x + low] = temp[x]; } }
public void mergeSort(int[] array, int low, int high) { int mid = (low + high) / 2; if (low < high) { mergeSort(array, low, mid); mergeSort(array, mid + 1, high); merge(a,low,mid,high); } }