为什么要使用二分搜索法
假如现在有5个数从小到大排列,如下
| 1 | 3 | 4 | 7 | 10 |
|---|
我们要找到数字7排在哪个位置,最简单的解决办法就是从头往后遍历就可以知道数字7在第四个
如果现在有10000个数字,要从中寻找到一个数字,仍使用遍历的方法,如果待寻找的数字排在第一个,则遍历算法是高效的,但是如果待寻找的数字排在最后一个,则寻找的时间复杂度大幅上升,因此,使用二分搜索法的时刻就到了
什么是二分搜索法
二分意为一分为二,即寻找一个中间数将原来的数组分为两部分,根据中间数和目标数的大小比较来确定下一个搜索区间,因为原数组是有序的,如果中间数大于目标数,说明目标数不会出现在中间数的左侧,只需搜索右侧区间,反之同理,由此简化计算量
二分搜索法怎么用
前提:保证数组的有序性
(假设数组 a 的左边界 left ,右边界 right,数组升序排列,寻找的数为tar)
- 步骤
- 找到中间数 mid = (left + right) / 2
- 确定下一个搜索区间后,重复 1
a[mid] < tar 则 left = mid + 1
a[mid] > tar 则 right = mid - 1
a[mid] == tar 则完成搜索
二分搜索法是一种在有序数组中快速查找目标值的算法。当面对大量数据时,相比于逐个遍历,二分搜索能显著提高效率。通过不断找到中间元素并缩小搜索范围,二分搜索在最坏情况下仍能保持对数时间复杂度,确保了性能的稳定。该方法适用于已排序的数据集,尤其在大数据场景下,如数据库索引和高效查找问题中发挥关键作用。
881

被折叠的 条评论
为什么被折叠?



