这段代码是实现二分查找。但是,它不起作用并返回未定义。我不知道为什么会出错,请帮助我!
function binarySearch(arr, key) {
let low = 0;
let high = arr.length - 1;
let mid
while (low <= high) {
mid = Math.floor((high + low) / 2);
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
high = mid - 1;
} else if (arr[mid] > key) {
low = mid + 1;
}
}
// return -1
}
console.log(binarySearch([2, 3, 4, 10, 40], 10));
我看到了这个错误,但我会给你一个机会先找到它。
更新代码以添加额外的 console.log 语句:
while (low <= high) {
mid = Math.floor((high + low) / 2);
// ADD THIS LINE
console.log("low=", low, "high=", high, "mid=", mid, "arr[mid]=", arr[mid]);
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
high = mid - 1;
} else if (arr[mid] > key) {
low = mid + 1;
}
}
您很快就会自己找到错误。