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; 
}
相关推荐
菩提祖师_2 分钟前
基于VR的虚拟会议系统设计
开发语言·javascript·c++·爬虫
YxVoyager9 分钟前
Qt C++ :QJson使用详解
c++·qt
橘颂TA9 分钟前
【剑斩OFFER】哈希表简介
数据结构·算法·散列表
小尧嵌入式10 分钟前
c++红黑树及B树B+树
开发语言·数据结构·c++·windows·b树·算法·排序算法
optimistic_chen12 分钟前
【Redis 系列】常用数据结构---ZSET类型
数据结构·数据库·redis·xshell·zset·redis命令
tobias.b16 分钟前
408真题解析-2009-10-数据结构-排序
数据结构·算法·排序算法·408考研·408真题·真题解析
Zachary_zlc19 分钟前
有向无环图检测算法和关键路径算法
算法
你撅嘴真丑21 分钟前
素数回文数的个数 与 求分数序列和
算法
好奇龙猫23 分钟前
【大学院-筆記試験練習:线性代数和数据结构(2)】
数据结构·线性代数·决策树
Wuliwuliii29 分钟前
贡献延迟计算DP
数据结构·c++·算法·动态规划·dp