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; 
}
相关推荐
u01092727118 小时前
C++中的策略模式变体
开发语言·c++·算法
2501_9418372618 小时前
停车场车辆检测与识别系统-YOLOv26算法改进与应用分析
算法·yolo
Aevget19 小时前
MFC扩展库BCGControlBar Pro v37.2新版亮点:控件功能进一步升级
c++·mfc·界面控件
探序基因19 小时前
单细胞Seurat数据结构修改分群信息
数据结构
六义义20 小时前
java基础十二
java·数据结构·算法
四维碎片20 小时前
QSettings + INI 笔记
笔记·qt·算法
Tansmjs20 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法
独自破碎E21 小时前
【优先级队列】主持人调度(二)
算法
weixin_4454766821 小时前
leetCode每日一题——边反转的最小成本
算法·leetcode·职场和发展
打工的小王21 小时前
LeetCode Hot100(一)二分查找
算法·leetcode·职场和发展