function mergeSort(arr, start, end) {
const len = end - start
if (len === 1) {
return true
}
const mid = start + (len >> 1)
mergeSort(arr, start, mid)
mergeSort(arr, mid, end)
return merge(arr, start, mid, end)
}
function merge(arr, start, mid, end) {
let temp = arr.slice(start, end)
let i = start
let j = mid
let tempIndex = 0
while (i < mid && j < end) {
if (arr[i] > arr[j]) {
temp[tempIndex] = arr[j]
j++
} else {
temp[tempIndex] = arr[i]
i++
}
tempIndex++
}
while (i < mid) {
temp[tempIndex] = arr[i]
tempIndex++
i++
}
while (j < end) {
temp[tempIndex] = arr[j]
tempIndex++
j++
}
console.log("排序后的temp", temp)
for (let k = start, tempI = 0; tempI < arr.length && k < end; tempI++ , k++) {
arr[k] = temp[tempI]
}
return arr
}
const arr = [11, 8, 2, 4,5,6,7,14]
console.log(mergeSort(arr, 0, arr.length))