//循环(逻辑清晰)
function binarySearch1 (arr,target){
if(arr.length ===0) return -1;
let startIndex =0;
let endIndex = arr.length-1;
while(startIndex<=endIndex){
let midIndex = Math.floor((startIndex+endIndex)/2);
if(target<arr[midIndex]){
endIndex = midIndex-1;
}else if(target > arr[midIndex]){
startIndex = midIndex+1;
}else{
return midIndex;
}
}
return -1;
}
//递归 性能更好
function binarySearch2 (arr,target,startIndex,endIndex){
if(arr.length ===0) return -1;
if(startIndex == null) startIndex = 0;
if(endIndex == null) endIndex = arr.length-1;
if(startIndex>endIndex) return -1;
let midIndex = Math.floor((startIndex+endIndex)/2);
if(target < arr[midIndex]){
return binarySearch2(arr,target,startIndex,midIndex-1);
}else if(target > arr[midIndex]){
return binarySearch2(arr,target,midIndex+1,endIndex);
}else{
return midIndex;
}
}
const arr =[12,45,67,89,100,234];
console.log(binarySearch1(arr,67));
console.log(binarySearch1(arr,234));
console.log(binarySearch2(arr,67));
console.log(binarySearch2(arr,45));
console