有人可以幫我理解為什么這個函式會給我這個輸出嗎?
function mergeSort(array) {
if (array.length === 1) return array
leftArraySorted = mergeSort(array.slice(0, (Math.floor(array.length / 2))))
rightArraySorted = mergeSort(array.slice(Math.floor(array.length / 2)))
let a = 0
let b = 0
const mergedSortedArray = []
for (let i = 0; i < array.length; i ) {
if (leftArraySorted[a] < rightArraySorted[b]) {
mergedSortedArray.push(leftArraySorted[a])
a = 1
}
else if (leftArraySorted[a] > rightArraySorted[b]) {
mergedSortedArray.push(rightArraySorted[b])
b = 1
}
else if (leftArraySorted[a] === rightArraySorted[b]) {
mergedSortedArray.push(leftArraySorted[a])
a = 1
}
else if (leftArraySorted[a] === undefined) {
mergedSortedArray.push(rightArraySorted[b])
b = 1
}
else if (rightArraySorted[b] === undefined) {
mergedSortedArray.push(leftArraySorted[a])
a = 1
}
}
return mergedSortedArray
}
console.log(mergeSort(6, 3, 5) 正在輸出 [3, 3 ,5],為什么?已經通過代碼 50 次,無法弄清楚是什么原因造成的。
uj5u.com熱心網友回復:
您應該使用let關鍵字來宣告這兩個本地陣列
let leftArraySorted = mergeSort(array.slice(0, (Math.floor(array.length / 2))))
let rightArraySorted = mergeSort(array.slice(Math.floor(array.length / 2)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514773.html
下一篇:回傳一個有序的JSONB嵌套哈希
