MergeSort
public static 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(array, low, mid, high);
}
}
public static void merge(int[] array, int low, int mid, int high) {
int[] tmp = new int[high - low + 1];
int left = low;// 左指针
int right = mid + 1;// 右指针
int t = 0;
while (left <= mid && right <= high) {
if (array[left] < array[right]) {
tmp[t] = array[left];
t++;
left++;
} else {
tmp[t] = array[right];
t++;
right++;
}
}
while (left <= mid) {
tmp[t++] = array[left++];
}
while (right <= high) {
tmp[t++] = array[right++];
}
for (int z = 0; z < tmp.length; z++) {
array[z + low] = tmp[z];
}
}

待改进1:排序分析、时间复杂度和空间复杂度分析
待改进2:排序GIF图
小白发文,有错及不足请指出,嘻嘻????~~~,Learning on the way~~~