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

学习二分查找

一,什么是二分查找?

二分查找是一种在有序数组中快速查找目标值的算法。

核心思想:就是每次把查找的区间减半,用中间值判断目标值再左还是在右,然后不断缩小区间范围。

前提条件:数组必须有序,(注:升序降序都行)

二,关于二分查找的时间复杂度

时间复杂度:O(log n) 注:比暴力O(n)快得多,且数据越大越明显。

空间复杂度:O(1)(非递归)

三,主要的二分模版

#include<iostream> #include<algorithm> using namespace std; int a[100010]={0}; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1); int x; while(m--){ cin>>x; int left=1; int right=n; int mid; bool tot=false; while(left<=right){ mid=left+(right-left)/2; if(x==a[mid]){ tot=true; break; }else if(x<a[mid]){ right=mid-1; }else if(x>a[mid]){ left=mid+1; } } if(tot==true){ cout<<"YES"<<'\n'; }else{ cout<<"NO"<<'\n'; } } return 0; }

有些关键点:

1,mid=left+(right-left)/2;会比(right+left)/2;更安全,防止int数据类型溢出。

2,就是循环条件:left<=right。

情况一:当然循环条件可以有选择的使用,常用的是小于等于是为了方便:查找目标值是否存在。查找区间也是[left,right]。

逻辑:当left=right时,区间里还有最后一个元素需要检查,此时如果不检查就会漏掉这个元素。

情况二:这个情况也是特殊情况,应为有些题会让你找数组边界,这个时候可以用left=light,一般这样的题数组区间是左开右闭合[left,right),不包含right;

逻辑:循环结束时left==light,返回left就是答案,或返回right。

总结:

二分查找就是:有序,减半,判断,缩边。


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

相关文章:

  • 代码随想录算法训练营Day-17 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
  • 告别重复造轮子:用快马生成openclaw启动高效开发工具链
  • 江诗丹顿官方售后服务中心新址实地考察报告(2026年4月最新版) - 亨得利官方服务中心
  • 2026AIGC 短剧出海全链路落地服务测评
  • 2025届毕业生推荐的五大AI写作方案实测分析
  • wps的VBA小tips1
  • 如何快速使用MTKClient:联发科设备救砖与调试的完整指南
  • 虾友见面会 | Comake Pi × ZeroClaw部署实战沙龙开放报名
  • OpenCore Legacy Patcher老Mac升级指南:从硬件评估到系统优化的完整流程
  • 绝区零一条龙:AI驱动的游戏体验革新工具
  • emptydir存储对应宿主机存储位置
  • 快速上手:使用Git管理南北阁Nanbeige 4.1-3B的微调与部署版本
  • PowerShell-7.5.0-win-x64
  • 项目经理必看:被领导批评后如何用向上管理化危机为转机
  • AI检索——基础 RAG vs. 检索 Agent对比
  • 降AI工具为什么比自己改效果好?从算法角度解读 - 我要发一区
  • 如何完全掌握微信聊天数据:WeChatMsg免费工具的终极指南
  • 脚本-FX Console 搜索效果
  • 鸿蒙跨设备互通:让你的应用“借用“另一台设备的相机和图库
  • Pixel Dream Workshop保姆级教程:从Docker拉取到内存流导出全流程
  • Luogu P1809 过河问题
  • 2026年泉州代理记账报税公司性价比排名,为你精选优质企业 - myqiye
  • 2025届毕业生推荐的五大AI科研工具推荐
  • vscode的if结尾提示插件“If End Marker”实现了if结尾提示功能
  • Typora标题自动编号完全指南-零代码基础实现自动化文档结构
  • 3分钟解锁B站直播自由:第三方推流工具实战指南
  • 实战演练:借助快马AI快速构建Spring Boot博客系统核心模块
  • NoSleep防休眠工具:让系统持续运行的轻量级解决方案
  • Vue3 + TS + Canvas + Pretext 实现虚拟表格
  • [特殊字符] Agent Lightning:点亮你的AI代理!⚡