介绍
- 在一个单调(递增或递减)的区间[a1,an]中查找元素x,每次将区间分为左右长 度相等的两部分,判断解在哪个区间中并调整区间上下界,重复直至找到x。
- 复杂度O(lg n)
- 作用:查找元素是否存在(找出位置或值)求满足条件的最值。
算法原理
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 10 | 21 | 25 | 43 | 46 | 57 | 57 | 65 | 78 | 90 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 10 | 21 | 25 | 43 | 46 | 57 | 57 | 65 | 78 | 90 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 10 | 21 | 25 | 43 | 46 | 57 | 57 | 65 | 78 | 90 |
代码
find1
满足a[x]>=k条件的最小的x。
mid=(L+R)/2;
if(a[mid]>=k) R=mid;
else L=mid+1;
find2
满足a[x]<=k条件的最大的x。
mid=(l+r+1)/2;
if (a[mid]<=k) l=mid;
else r=mid-1;

本文详细介绍了一种高效的查找算法——二分查找。适用于已排序数组,通过不断将查找区间分为两半来缩小查找范围,实现快速定位目标元素。该算法的时间复杂度为O(log n),适用于查找元素或求解满足特定条件的最值问题。
724

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



