算法说明
二分查找是一个很经典的算法,不仅是面试,日产开发也是经常会用到的一个思路。二分查找是基于有序序列的查找方式,在有序的前提下每次将目标和序列的中间元素进行比较,从而确定目标范围,每次可以排除一半的候选目标,不断地重复缩小范围,最后确认得到目标元素的下标。
二分的key word就是三个
- 有序
- 元素不重复
- 每次与中间元素比较来确认范围,不断重复
由于每次可以排除一半的候选,所以时间复杂度是O(logn)。
简单图示一个例子
目标数组为 [1, 3, 4, 6, 8, 10, 15, 17],查找目标为 4
首先初始化左边界0,右边界为数组尾,中间下标为 (0 + 7) / 2 = 3 第一次查询:获取数组的中间值 num[3]=6,目标值小于它,将右边设置为mid 第二次查询:获取数组的中间值 num[2]=4,目标值等于它,于是找到了
可以看到思路还是很简单,下面实战一下。