二分查找详解

news2024/11/18 11:50:18

🌈🌈😄😄

欢迎小伙伴来到茶色岛独家岛屿,本期会对二分查找进行详细的讲解,做好准备了么,那么开始吧。

🌲🌲🐴🐴

一、简介

二、查找思路:

三、二分法注意点

死循环:

二分法的左闭右闭区间:

四、总结

五、相关示例

一、简介

二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。

二、查找思路:

如果中间值大于查找值,则往数组的左边继续查找,如果小于查找值这往右边继续查找。二分查找的思想虽然非常简单,但是查找速度非常长,二分查找的时间复杂度为O(logn)。

三、二分法注意点

  1. while循环中 left 和 right 的关系,到底是 left <= right 还是 left < right
  2. 迭代过程中 mid 和 right 或left的关系,到底是 right = mid - 1 还是 right = mid
  3. 死循环问题
  4. 二分法的左闭右闭区间

死循环:

产生缘由:

当循环条件 while (left <= right)时

因为 mid = left + ((right - left) / 2),当 left = right 的时候,mid 的值不变

mid 不继续改变,由于right = mid,right 也不会改变,所以三个数字不会继续改变

循环条件 while (left <= right) 却仍然满足,不会跳出循环,产生死循环

二分法的左闭右闭区间:

这个是根据个人喜好决定的,我比较喜欢左闭右闭区间,不用考虑区间值是否丢失问题。

四、总结

二分法最重要的两个点,就是循环条件和后续的区间赋值问题

五、相关示例

34. 在排序数组中查找元素的第一个和最后一个位置_茶色岛^的博客-CSDN博客

LeetCode 744. 寻找比目标字母大的最小字母_茶色岛^的博客-CSDN博客

LeetCode 852. 山脉数组的峰顶索引_茶色岛^的博客-CSDN博客

LeetCode 441. 排列硬币_茶色岛^的博客-CSDN博客

LeetCode 367. 有效的完全平方数_茶色岛^的博客-CSDN博客

LeetCode 69. x 的平方根_茶色岛^的博客-CSDN博客

LeetCode 374. 猜数字大小_茶色岛^的博客-CSDN博客

LeetCode 35. 搜索插入位置_茶色岛^的博客-CSDN博客

LeetCode 278. 第一个错误的版本_茶色岛^的博客-CSDN博客

LeetCode 704. 二分查找_茶色岛^的博客-CSDN博客

以上是我最近写的一些博客,希望会对小伙伴提供帮助,不懂的可以私信哦,我们一起探讨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更快更稳更安全!天翼云CDN了解一下

近年来&#xff0c;数字化转型正催生各行各业掀起新一轮的信息变革。作为我国经济发展的“血液”&#xff0c;金融行业的一举一动都牵动着国民经济的神经。相对于其他行业&#xff0c;金融业务因其“高敏感性、高价值”等特点&#xff0c;行业数字化转型需要在保障安全和隐私等…

【基础算法】圆周率的多种方法求算 C++实现

●割圆法 一个圆如下面左图所示&#xff0c;其半径为1&#xff0c;其内部内接一个正六边形。设正六边形的边长为y1。由几何知识可得知y11&#xff0c;所以圆的周长可近似为正六边形的周长C6y16.所以圆周率为前面的近似圆周长与圆直径之比&#xff0c;即C/2 3≈π&#xff0c;这…

关于腾讯股票api股票接口的功能分析

因为国内外股价的上涨都可以在界面上去查询&#xff0c;所以公司能准确地判断股价上涨&#xff0c;并适时买入、卖出&#xff0c;以此获得一定的利润。 腾讯股票api股票接口还可以把以往的数据表示成一条折线&#xff0c;让公司在进行分析时更形象、更有参考意义。在连接界面后…

【数据结构与算法】线性表的查找

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;数据结构与算法 &#x1f320; 首发时间&#xff1a;2022年12月5日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e;…

Java入门教程(5)——开发第一个Java程序

文章目录1.1. 新建一个记事本&#xff0c;将后缀名改为java 如图示&#xff1a; 2.双击&#xff0c;选择打开方式为记事本 输入代码&#xff1a; public class HelloWorld{public static void main(String[] args){System.out.println("Hello world&#xff01;");…

基于DIPUM工具箱对图书数字图像进行处理(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 数字图像处理(Digital Image Processing)将图像信号转换成数字信号并利用计算机对其进行处理,起源于20世纪20年代,目前已广泛地…

电脑硬盘就一个c盘怎么分区,新电脑买回来只有一个c盘怎么分区

电脑硬盘就一个c盘怎么分区&#xff1f;为了方便存储数据&#xff0c;需要对磁盘分区那么&#xff0c;在本文中&#xff0c;易我小编将讲解电脑磁盘分区的实操方法。 一、Diskpart对C盘分区 在Windows操作系统中&#xff0c;Diskpart是命令提示符&#xff0c;可以实现创建分区…

安全面试之基础总结篇【超详细!】

前言 作者简介&#xff1a;不知名白帽&#xff0c;网络安全学习者。 博客主页&#xff1a;不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 安全面试专栏&#xff1a;https://blog.csdn.net/m0_63127854/category_11869916.html 网络安全交流社区&#xff1a;https:…

华为网络模拟器ENSP安装(附安装包)

一、安装前注意事项 1、安装路径 以下所有软件,安装时不建议修改默认路径,尤其ENSP绝对不能安装在电脑主机的中文路径下,否则没法启动。 2、先安装依赖软件 VirtualBox不能安装目录不能有中文,只能装5.0至5.2版本。 WireShark为驱动级软件,需要重启生效,可以在三个软…

WebDAV之葫芦儿·派盘+恒星播放器

恒星播放器 支持WebDAV方式连接葫芦儿派盘。 想要拥有一款万能视频播放器,全能解码播放器,无需转码,支持所有格式的视频和音频,直接播放的播放器?那就选恒星播放器。 恒星播放器支持视屏投屏,倍速播放,后台播放等功能,还能一键截图和录制gif动图。支持全格式超高清真…

企业架构MySQL数据库架构读写分离

学习目标与内容 运维解决方案 读写分离常见的实现方式 MySQL读写分离案列实现 主从复制master配置 主从复制slave配置 简单业务代码实现 用以下代码通过停启主从服务器来检查主从复制原理~ <?php //创建类 class Mysql {//构造方法//当类被实例化时,会触发此方法public fu…

[附源码]Python计算机毕业设计Django居家养老服务系统小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[附源码]计算机毕业设计JAVA疫情居家隔离服务系统

[附源码]计算机毕业设计JAVA疫情居家隔离服务系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

【webrtc】PacketBuffer的VCMPacket管理

代码应该是m79.PacketBuffer 只是作为RtpVideoStreamReceiver 的一个成员变量出现,看起来并不重要,但是对于rtp包来说,非常重要:video_coding::PacketBuffer packet_buffer_;PacketBuffer::InsertPacket(VCMPacket* packet) 输入和输出 输入的是VCMpacket的指针 ,InsertPa…

线程池详解

一、概念 1、线程池管理器&#xff1a;用于创建并管理线程池&#xff0c;包括创建线程池&#xff0c;销毁线程池&#xff0c;添加新任务&#xff1b; 2、工作线程&#xff1a;线程池中线程&#xff0c;可以循环的执行任务&#xff0c;在没有任务时处于等待状态&#xff1b; …

Python 采集87个手绘风格PPT模板

源码下载链接&#xff1a;ppt.rar - 蓝奏云 PPT下载链接&#xff1a;https://pan.baidu.com/s/1HUAEe_-4IEV6ttOKC_VPuA?pwd96px 提取码&#xff1a;96px 采集的参数 page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "https:…

网络层之IP协议(必备知识)

文章目录1、IP协议头格式2、IP分片与组装4、IP基础知识<1>IP地址属于网络层地址<4>IP地址<2>路由控制<3>IP属于面型无连接型4、其他重要协议或技术<1>ICMP协议TCP/IP的心脏是互联网。这一层主要由IP(Internet Protocal) 和ICMP(Internet Control…

短视频内容创作:内容发给谁?为什么发?发什么?以什么形式发?

一句话介绍短视频内容定位&#xff0c;我赢助手每周一课短视频运营关键节点介绍。 内容定位无非就是视频发给谁?为什么发?以什么形式发&#xff1f; 短视频发给谁&#xff1f;就是做好你的目标受众的细分。 商业定位我们之前聊过了&#xff0c;如果你看过之前的内容&#x…

双十二护眼灯牌子买什么的好?几款比较好的学生护眼灯推荐

双十二即将来临&#xff0c;相信很多小伙伴们也开始着手选择比较喜欢的东西了吧&#xff0c;那对于学生来讲&#xff0c;护眼台灯也是一个不可忽视的好东西。 现在的学习压力这么大&#xff0c;用眼过于频繁&#xff0c;所以很多学生孩子眼睛就很容易近视&#xff0c;小小年纪就…

MATLAB实现希尔伯特变换以及FFT补零分析

南京信息工程大学 实验&#xff08;实习&#xff09;报告 实验&#xff08;实习&#xff09;名称 数字信号处理 实验&#xff08;实习&#xff09;日期 得分 指导老师 学院 电信院 专业 电子信息工程 年级 2020 班次 …