先找一个区间arr[left,right],判断要查找的数是否在该区间内,如果不在那么就缩小为区间的一半
function binarySearch(arr,num){
let left = 0;
let right = arr.length-1;
//当左区间坐标小于等于右区间坐标时一直循环查找
while(left <= right){
//左右区间的中间变量 mid 是个整数
let mid = Math.floor((left + right)/2)
//当要查找的数小于数组中间坐标的时候,就证明要查找的数在left--mid中间
//那么就让right = mid - 1,缩小为原来区间大小的一半
if(num < arr[mid]){
right = mid +1
}else if(num > arr[mid]){
//当要查找的数大于数组中间坐标的时候,就证明要查找的数在mid--right中间
//那么就让left= mid + 1,缩小仍为原来区间大小的一半
left = mid -1
}else{
//当要查找的数为数组中间值时,就输出中间的索引
return mid
}
}
//若执行到此,就证明没有查找到数,因此返回空值
return null
}
let arr = [1,2,3,4,5,6,7,8,9,10]
console.log(binarySearch(arr,4));