定义:在一个有序的元素列表中查找具体某个元素时,每次都查中间的元素,每次都可以排除一半元素
输入:有序的元素列表
输出:要查找的元素在元素列表中所在位置 / null
想要知道这个元素列表最多需要多少步可以猜出具体是哪个元素,可以用以下公式计算得出:
最多需要多少步 = log2n(n代表元素列表的元素个数)/ logn (log 指的都是 log2)
如某元素列表共有 32 个数字,那么最多需要几步可以猜出别人随意选中的数字?
1. 32 代入 n,也就是 log232
2.log232 意思是,乘以多少个 2 等于 32
3.计算 2n = 32,得出 5
结果就是,最多需要5步
# JS 实现二分查找function search(list, item) {let low = 0let high = list.length - 1let midwhile (low <= high) {mid = Math.floor((low + high) / 2)let guess = list[mid]if (guess === item) {return mid} else if (guess < item) {low = mid + 1} else if (guess > item) {high = mid - 1}}return null}search([1,2,3,4,5,6,7], 7)
