|
|
@ -25,10 +25,10 @@ void merge(vector<int>& nums, int left, int mid, int right) {
|
|
|
|
// 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++
|
|
|
|
// 若“左子数组已全部合并完”,则选取右子数组元素,并且 j++
|
|
|
|
if (i > leftEnd)
|
|
|
|
if (i > leftEnd)
|
|
|
|
nums[k] = tmp[j++];
|
|
|
|
nums[k] = tmp[j++];
|
|
|
|
// 否则,若“右子数组已全部合并完”或“左子数组元素 < 右子数组元素”,则选取左子数组元素,并且 i++
|
|
|
|
// 否则,若“右子数组已全部合并完”或“左子数组元素 <= 右子数组元素”,则选取左子数组元素,并且 i++
|
|
|
|
else if (j > rightEnd || tmp[i] <= tmp[j])
|
|
|
|
else if (j > rightEnd || tmp[i] <= tmp[j])
|
|
|
|
nums[k] = tmp[i++];
|
|
|
|
nums[k] = tmp[i++];
|
|
|
|
// 否则,若“左子数组元素 > 右子数组元素”,则选取右子数组元素,并且 j++
|
|
|
|
// 否则,若“左右子数组都未全部合并完”且“左子数组元素 > 右子数组元素”,则选取右子数组元素,并且 j++
|
|
|
|
else
|
|
|
|
else
|
|
|
|
nums[k] = tmp[j++];
|
|
|
|
nums[k] = tmp[j++];
|
|
|
|
}
|
|
|
|
}
|
|
|
|