我正在尝试在JavaScript中实现二进制搜索 . 我能够返回目标元素的索引,但是,我的程序没有返回“-1”表示目标值不在数组中 . 例如,如果我有[12,39,52,61,88,100]的数组,并且我在我的二进制搜索函数中输入目标值“200”,则它不返回“-1”以指示即使我构造了我的else语句来执行此操作,该值也不存在于数组中 . 谁能告诉我我做错了什么?提前致谢 .
我的代码:
function binarySearch(arr, target){
var start = 0;
var end = arr.length - 1;
while(start <= end){
var mid = Math.floor((start + end)/2);
if(arr[mid] < target){
start = mid + 1;
}
else if(arr[mid] === target){
return mid;
}
else if(arr[mid] > target) {
end = mid - 1;
}
else {
return -1;
}
}
}
var myArr = [12, 39, 52, 61, 88, 100];
binarySearch(myArr, 200);
1 回答
您需要将
-1
的返回值移出while
循环,因为如果循环内没有返回,则您的值尚未找到 . 所以最后返回-1
.即使是最后一次检查,您可以省略,在检查较小或相等的值后,左侧总是更大 .