C++基础算法---整数二分查找

3、整数二分查找

二分模板一共有两个,分别适用于不同情况。

算法思路:

  1. 假设目标值在闭区间[1,r]中,每次将区间长度缩小一半,当l=r时,我们就找到了目标值
  • 版本1

当我们将区间[1,r]划分成[1,mid][mid+1,r]时,其更新操作是r = mid或者1 = mid + 1, 计算mid时不需要加1。

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

当我们将区间[1,r]划分成[1,mid-1][mid,r]时,其更新操作是r = mid-1或者1 = mid, 计算mid时需要加1。

c++ 复制代码
int bsearch_2(int l ,int r)
{
   while(l<r)
   {
        int mid = (l+r+1)/2;
        if(check(mid)) l = mid;
        else r = mid + 1;
	}
   return l; 
}
相关推荐
听情歌落俗5 分钟前
c++通讯录管理系统
开发语言·c++·算法
光头闪亮亮15 分钟前
C++使用nlohmann/json库解析JSON数据应用示例
c++
Peace & Love48717 分钟前
C++初阶 -- 模拟实现list
开发语言·c++·笔记
超级大只老咪18 分钟前
蓝桥杯知识点大纲(JavaC组)
java·算法·蓝桥杯
!chen19 分钟前
Unity[法线贴图]原理与实践
算法
G_dou_30 分钟前
并发编程基础
算法·rust
yuuki2332331 小时前
【数据结构】顺序表的实现
c语言·数据结构·后端
碧海银沙音频科技研究院1 小时前
ES7243E ADC模拟音频转i2S到 BES I2S1 Master输出播放到SPK精准分析
人工智能·算法·音视频
百度智能云2 小时前
MySQL最怕的IN大列表,被百度智能云GaiaDB治好了!查询速度提升60倍!
算法
信奥卷王2 小时前
[GESP202506 五级] 奖品兑换
数据结构·算法