视频解说:二分查找通用模板
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频解说:二分查找通用模板相关的知识,希望对你有一定的参考价值。
该视频首发公众号和B站,目前试看版本为B站版本。主要讲解二分查找的通用模板。文章末尾有相应的源码。
int binarySearch(int *arr, int arrSize, int x) {
int l = -1, r = arrSize; // (1)
int mid;
while(r - l > 1) { // (2)
mid = l + (r - l) / 2; // (3)
if( isGreen(arr[mid], x) ) // (4)
r = mid; // (5)
else
l = mid; // (6)
}
return r; // (7)
}
- ( 1 ) (1) (1) l l l 代表 红色游标, r r r 代表 绿色游标;
- ( 2 ) (2) (2) 当区间长度大于 2 的时候,二分缩小区间,这一步被称为 区间收敛;
- ( 3 ) (3) (3) m i d mid mid 为计算出来的区间 [ l , r ] [l, r] [l,r] 的中点;
- ( 4 ) (4) (4) 判断区间中点对应的元素是 绿色 还是 红色;
- ( 5 ) (5) (5) 如果 中点元素 是 绿色,则从 中点 到 r r r 的值都为 绿色,用 中点 替换 绿色游标;
- ( 6 ) (6) (6) 如果 中点元素 是 红色,则从 l l l 到 中点 的值都为 红色,用 中点 替换 红色游标;
- ( 7 ) (7) (7) 这个地方是模板需要变通的地方,如果需要返回红色边界,那么应该返回 l l l;反之,如果需要返回绿色边界,则应该返回 r r r。这个问题中,是后者。
以上是关于视频解说:二分查找通用模板的主要内容,如果未能解决你的问题,请参考以下文章
算法二分法 ② ( 排序数组中查找目标值 | 二分法的经典写法 | 在排序数组中查找元素的最后一个位置 | 二分法的通用模板 )
力扣35:搜索插入位置, 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题
力扣35:搜索插入位置, 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题