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; 
}
相关推荐
夏乌_Wx4 分钟前
练题100天——DAY33:种花问题+三个数的最大乘积+子数组最大平均数Ⅰ
数据结构
程序员阿鹏6 分钟前
List和Set的区别
java·开发语言·数据结构·后端·list
Yzzz-F16 分钟前
牛客周赛round123 G小红出千[补题][滑动窗口]
算法
肆悟先生33 分钟前
3.16 含有可变参数的函数
c++·算法
郝学胜-神的一滴35 分钟前
封装OpenGL的Shader相关类:从理论到实践
开发语言·c++·程序人生·游戏·图形渲染
步步为营DotNet38 分钟前
深度解析.NET中属性(Property)的幕后机制:优化数据访问与封装
java·算法·.net
Swift社区38 分钟前
LeetCode 454 - 四数相加 II
java·算法·leetcode
tokepson41 分钟前
反向传播
深度学习·算法·ai·反向传播
Xの哲學1 小时前
Linux AQM 深度剖析: 拥塞控制
linux·服务器·算法·架构·边缘计算
艾醒1 小时前
大模型原理剖析——突破LLM效率瓶颈:多标记预测(MTP)技术深度解析与实战
算法