当前位置: 首页 > news >正文

二分查找/二分答案

0.前言

二分算法(Binary Search),也叫折半查找,是一种在有序数据集合中高效查找目标值的算法。它通过不断将查找范围缩小一半,快速定位目标,时间复杂度为 O(logn),远优于线性查找的 O(n)。

1.原理

假设有一个升序排列的数组arr和一个目标值target,二分查找的过程如下:

  • 定义两个指针分别指向数组的起始位置和结束位置。

  • 计算中间索引并比较该位置上的元素与目标值的关系。

  • 如果相等,则返回当前索引;如果小于目标值,则调整左边界继续向右半部分查找;反之则调整右边界向左半部分查找。

  • 当左右边界重合仍未找到目标值时,说明数据集中不存在此值。

2.代码模板

#include<bits/stdc++.h> using namespace std; //检查是否符合条件 bool check(int a){ return ; } int main(){ int n,k; cin>>n>>k; int a[100055]; for(int i=1;i<=n;i++){ cin>>a[i]; } int l=1,r=1e8; while(l<r){ int m=(l+r)>>1; // 或m=(l+r)/2 if(check(m)){ l=m; }else{ r=m; } } cout<<l; }

3.时间复杂度

由于每次迭代都将问题规模减半,因此时间复杂度为 O(log n)

http://www.jsqmd.com/news/541444/

相关文章:

  • 蒙纳什大学发现多模态推理模型的“不确定性陷阱“
  • 2026钢模板租赁优质厂家精选指南 - 优质品牌商家
  • 基于主从博弈的主动配电网阻塞管理探索
  • The Dark Art of Low-Light Enhancement: Why Retinex Models Don’t Need Handcrafted Priors Anymore
  • OpenClaw自动化测试:Qwen3-32B批量执行LeetCode题目
  • STM32开发中的C语言高效编程技巧
  • 禾赛与华为拿下七成市场,激光雷达“抢单大战”谁在掉队?
  • LeetCode-041:缺失的第一个正数,把数组当哈希表,原地放回“该在的位置”
  • 使用小龙虾来操作猿编程的遥控车
  • 02.Linux常用文件操作命令
  • Python MCP协议实战指南:深度解析RFC-8888兼容实现与5大核心中间件集成(附GitHub Star 1.2k模板库)
  • 魔兽争霸III终极优化指南:WarcraftHelper插件完全使用教程
  • BMH23M001 24位Σ-Δ ADC模块技术解析与高精度测量实践
  • 【华为OD机试真题】伐木工 · 木材切割收益最大化问题(C语言)
  • 给 Agent 添加工具调用能力:搜索/计算/API
  • Nimbus:一个统一的具身合成数据生成框架
  • 2026年点胶机厂家权威推荐榜:视觉点胶机/非标灌胶机定制/非标点胶机定制/高精度灌胶机/高精度点胶机/选择指南 - 优质品牌商家
  • AMBER新手入门:5步搞定分子动力学模拟(附ff14SB力场配置指南)
  • FFmpeg 中编译和使用 soxr 重采样引擎
  • 嵌入式OLED UI组件库:轻量级C++组件化设计
  • C++ Template 特化机制详解
  • SEO_掌握核心算法,解读SEO排名背后的原因
  • 上海小程序开发公司三项测评:报价透明度,交付准时率,售后响应度
  • SEO_从基础到精通的SEO完整学习路径介绍(437 )
  • Tasker:裸机嵌入式轻量级任务调度器
  • Multisim仿真-FSK调制系统设计与性能优化
  • Webots新手避坑:用SolidReference搞定并联闭环机构,让轮腿机器人不再‘散架’
  • springboot框架高校大学生竞赛项目管理系统
  • jspssm基于Web的动漫网站论坛交流的设计与实现_n99n6cvu
  • 百川2-13B-4bits量化版对比测试:OpenClaw日常任务执行效率报告