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; 
}
相关推荐
zmzb010320 分钟前
C++课后习题训练记录Day38
开发语言·c++
獭.獭.20 分钟前
C++ -- STL【string的使用】
c++·string·auto
福尔摩斯张42 分钟前
Linux进程间通信(IPC)机制深度解析与实践指南
linux·运维·服务器·数据结构·c++·算法
你好~每一天1 小时前
未来3年,最值得拿下的5个AI证书!
数据结构·人工智能·算法·sqlite·hbase·散列表·模拟退火算法
杰克尼1 小时前
3. 分巧克力
java·数据结构·算法
lijiatu100861 小时前
C++ 类成员变量声明语法错误
java·开发语言·c++
zore_c1 小时前
【C语言】带你层层深入指针——指针详解2
c语言·开发语言·c++·经验分享·笔记
cookies_s_s1 小时前
项目--协程库(C++)前置知识篇
linux·服务器·c++
zmzb01031 小时前
C++课后习题训练记录Day39
数据结构·c++·算法
qq_310658512 小时前
mediasoup源码走读(二)环境搭建与 Demo 运行
服务器·c++·音视频