(1)二分查找的前提条件
数组中的数据必须是有序的。
(2)核心逻辑:每次排除一半的查找范围
①、定义两个变量min和max
②、定义mid,mid是在min和max中间
③、如果要查找的元素在mid的左边,缩小范围时,min不变,max等于mid – 1
④、如果要查找的元素在mid的右边,缩小范围时,max不变,min等于mid + 1
(3)完整代码

(4)补充
①、二分查找可以提高查找效率
②、如果数据数乱序的,先排序再用二分查找得到的索引没有实际意义,只能确定当前数字在数组中是否存在,因为排序之后数字的位置就可能发生变化了。
(5)二分查找进阶——插值查找
①、要求:数据要有序,且数据分布尽可能的均匀一点;
②、优势:满足要求的情况下,效率比二分查找快;
③、缺点:没满足要求会更慢。

核心公式:

min,一般指偏移量的大小。
key,要查询的数据
key – arr[min],数组中要查询的数字的索引与最小的值的索引差值
arr[max]-arr[min],数组中,最大值的索引和最小值索引的差值
max – min,整个数组的长度
