1.首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。
2.如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。
3.如果某一步数组为空,则表示找不到目标元素。
binarySearch = (arr, val) => {
let min = 0;
let max = arr.length - 1;
while (min < max) {
const mid = Math.floor((min + max) / 2);
if (arr[mid] === val) {
return mid
}
if (arr[mid] < val) {
min = mid + 1;
} else if (arr[mid] > val) {
max = mid - 1;
} else {
return -1
}
}
}