前置条件
有序的数组
使用循环
function binarySearch(nums:number[],target:number):number{
let low=0,high=number.length-1
while(low<=high){
let mid=low+((high-low)>>1)
if(target>nums[mid]){
low=mid+1
}else if(target<nums[mid]){
high=mid-1
}else{
retuen mid
}
}
return -1
}
使用递归
function binarySearch(nums:number[],low:number,high:number,target:number):number{
if(low>high) return -1
let mid=low+((high-low)>>1)
if(target===nums[mid]){
return mid
}else if(target>nums[mid]){
return binarySearch(nums,mid+1,high,target)
}else{
return binarySearch(nums,low,mid-1,target)
}
}