二分查找

剑指offerbash

1、二分查找的时间复杂度logn

2、总结:

一、单调性框架

二、存在两段性的性质ui

3、二分的流程

一、肯定二分的边界spa

二、编写二分的代码框架设计

三、设计一个check 性质,答案在两段性质的分界点上code

四、判断一下区间如何更新模板

五、若是更新方式写的是 l=mid,r=mid-1,那么就在算mid的时候加上1class


4、模板

二分查找模板test

版本1 :区间 [l,r] 的更新操做是 r=mid,l=mid+1;计算mid      绿颜色总结

int test( int l , int r){
   while( l < r ){
      int mid = l + r / 2;
      if( check( mid ) ){
         r = mid;
      }else {
         l= mid + 1;
      }
   }
   return l;
}复制代码

版本2:区间[l,r] 的更新操做是 r = mid-1,l=mid 时,计算mid     红

int test2(int l ,int r){
   while(l<r){
      int mid = l+r+1/2;
      if (check(mid)){
         l = mid;
      }else {
         r = mid-1;
      }
   }
   return l;
}复制代码
相关文章
相关标签/搜索