function merge(nums, left, mid, right) {
const tmp = new Array(right - left + 1);
let i = left,
j = mid + 1,
k = 0;
while (i <= mid && j <= right) {
if (nums[i] <= nums[j]) {
tmp[k++] = nums[i++];
} else {
tmp[k++] = nums[j++];
}
}
while (i <= mid) {
tmp[k++] = nums[i++];
}
while (j <= right) {
tmp[k++] = nums[j++];
}
for (k = 0; k < tmp.length; k++) {
nums[left + k] = tmp[k];
}
}
function mergeSort(nums, left, right) {
if (left >= right) return;
let mid = Math.floor(left + (right - left) / 2);
mergeSort(nums, left, mid);
mergeSort(nums, mid + 1, right);
merge(nums, left, mid, right);
}
let arr = [64, 34, 25, 12, 22, 11, 90]
console.log('排序前的数组: ', arr)
let sortedArr = mergeSort(arr,0, arr.length - 1)
console.log('排序后的数组: ', sortedArr)