1
我正在爲二進制搜索算法編寫我自己的函數,我似乎無法找到邏輯上的差異。當我搜索4時,它不會返回理想的響應。二進制搜索代碼
下面的代碼:
var list = [1,2,3,4,6,7,13,18,19];
function binarySearch(list,number) {
var newList = list;
while (newList.length >= 1) {
var halfNum = Math.round(newList.length/2);
if (newList[halfNum] === number) {
return "Number Found";
} else if (newList[halfNum] < number) {
newList = newList.slice(halfNum + 1,newList.length - 1);
} else {
newList = newList.slice(0,halfNum - 1);
}
}
}
console.log(binarySearch(list,4));
作爲一般調試技術,插入'console.log'調用到代碼以顯示計算出的值的關鍵部分。這將顯示出現問題的地方。 – Matt
@Matt 謝謝,我試過了,我找不出錯誤在代碼中的位置。 –
一個好的開始會在* slice *之後看* newList *。 – RobG