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; 
}
相关推荐
冰冰菜的扣jio6 小时前
Redis高级数据结构
数据结构·redis·bootstrap
Yu_Lijing6 小时前
基于C++的《Head First设计模式》笔记——工厂模式
c++·笔记·设计模式
zd8451015006 小时前
stm32f407 电机多轴联动算法
stm32·单片机·算法
十五年专注C++开发6 小时前
CMake进阶:核心命令get_filename_component 完全详解
开发语言·c++·cmake·跨平台编译
代码游侠6 小时前
应用——Linux FrameBuffer图形显示与多线程消息系统项目
linux·运维·服务器·开发语言·前端·算法
Eloudy6 小时前
矩阵张量积(Kronecker积)的代数性质与定理
算法·量子计算
mrcrack6 小时前
洛谷 B3656 【模板】双端队列 1 方案1+离线处理+一维数组+偏移量 方案2+stl list
c++·list
lingzhilab6 小时前
零知IDE——基于STMF103RBT6结合PAJ7620U2手势控制192位WS2812 RGB立方体矩阵
c++·stm32·矩阵
go_bai6 小时前
生产消费模型-简洁线程池
linux·c++·笔记
多米Domi0116 小时前
0x3f 第25天 黑马web (145-167)hot100链表
数据结构·python·算法·leetcode·链表