视频解说:二分查找通用模板

Posted 英雄哪里出来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频解说:二分查找通用模板相关的知识,希望对你有一定的参考价值。

《夜深人静写算法》(第一季02) 二分查找 (下)

  该视频首发公众号和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:搜索插入位置, 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题

数组: 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题, 力扣35:搜索插入位置

Eclipse 中的通用代码片段或模板