定义:在一个有序
的元素列表中查找具体某个元素时,每次都查中间的元素,每次都可以排除一半元素
输入:有序的元素列表
输出:要查找的元素在元素列表中所在位置 / 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 = 0
let high = list.length - 1
let mid
while (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)