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; 
}
相关推荐
Ka1Yan1 天前
[链表] - 代码随想录 24. 两两交换链表中的节点
数据结构·链表
rit84324991 天前
有限元算法求解铁木辛柯梁梁静力问题实例
算法
智驱力人工智能1 天前
矿山皮带锚杆等异物识别 从事故预防到智慧矿山的工程实践 锚杆检测 矿山皮带铁丝异物AI预警系统 工厂皮带木桩异物实时预警技术
人工智能·算法·安全·yolo·目标检测·计算机视觉·边缘计算
Python_Study20251 天前
制造业企业如何构建高效数据采集系统:从挑战到实践
大数据·网络·数据结构·人工智能·架构
忆锦紫1 天前
图像降噪算法:中值滤波算法及MATLAB实现
图像处理·算法·matlab
知乎的哥廷根数学学派1 天前
基于多分辨率注意力脉冲神经网络的机械振动信号故障诊断算法(西储大学轴承数据,Pytorch)
人工智能·pytorch·深度学习·神经网络·算法·机器学习
十五年专注C++开发1 天前
CMake基础:foreach详解
linux·c++·windows·cmake·跨平台编译
kebijuelun1 天前
Qwen 团队提出 ArenaRL:面向开放式 Agent RL 任务
人工智能·算法·语言模型·transformer
机器学习之心1 天前
PSO优化的K-means++聚类算法用于用户用电行为分析的实现方案
算法·kmeans·聚类
小黄鸭code1 天前
C++ 算法笔试题(常见算法版)
c++·算法·排序算法