public static void mergeSort(int[] array, int left, int right) {
if (left >= right)
return;
int middle = (left + right) >> 1;
mergeSort(array, left, middle);
mergeSort(array, middle + 1, right);
merge(array, left, middle, right);
}
public static void merge(int[] array, int left, int middle, int right) {
int[] temp = new int[right - left + 1];
int i = left, j = middle + 1, k = 0;
while (i <= middle && j <= right)
temp[k++] = array[i] <= array[j] ? array[i++] : array[j++];
while (i <= middle)
temp[k++] = array[i++];
while (j <= right)
temp[k++] = array[j++];
for (int l = 0; l < temp.length; l++) {
array[left + l] = temp[l];
}
}
归并排序算法
最新推荐文章于 2022-07-21 10:31:02 发布