学习笔记-二分法查找

2023-10-27

二分法查找

要求必须是一个有序数组,才可以进行二分法查找。二分法运用到了递归回溯的思想。

思路

1.确定中间数的坐标 mid=(left+right)/2
2.如果中间数大于查询的数,说明查询的数在左边,向左递归继续查询,此时left不变,right变为mid-1
3.如果中间数小于查询的数,说明查询的数在右边,向右递归继续查询,此时right不变,left变为mid+1
3.如果都不是,那就说明中间数就是要找的数,将下标返回,也就是返回mid

注意:结束递归有两种情况,一种是找到了数,直接返回下标,就是3;另一种是没找到,此时left>right,返回-1。
另外,在递归调用自己时,要加上return,这样保证将值正确的传回。

代码

 /**
     * 查找一个数
     * @param arr
     * @param left
     * @param right
     * @param value
     * @return
     */
    private static int binarySearch(int[] arr,int left,int right,int value){
   
        if(left>right){
   
            return -1;
        }
        int mid=(left+right)/2;
        if(value>arr[mid]){
   
            return binarySearch(arr,mid+1,right,value);
        }else if(value<arr[mid]) {
   
            return 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习笔记-二分法查找 的相关文章

随机推荐

  • 多表联查优化

    多表联查优化我总结有以下几点 优化sql语句 索引优化 反范式设计 业务代码优化 使用缓存 优化sql语句 sql性能分析 查看执行频次 查看执行频次 select insert delete update shwo global sess
  • Python应该怎么学,如何系统地自学Python?

    这是一份kaggle上的银行的数据集 研究该数据集可以预测客户是否认购定期存款y 这里包含20个特征 1 分析框架 2 数据读取 数据清洗 导入相关包 import numpy as np import pandas as pd 读取数据
  • 厉害了,用 Java 也能实现图片识别!

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • VS2010 编译 sqlite3 生成动态库和链接库

    如果想以dll的方式使用sqlite而新建空的dll工程 添加sqlite源文件 会发现能生成dll 但缺乏lib函数信息映射库 单独使用dll文件是比较麻烦的 而网上多数做法是通过lib exe手动生成lib 这当然不是我想要的 结合几篇
  • 给NVMe设备发送一个SCSI READ_10命令

    0 READ 10命令 READ 6命令只能支持块大小为512B设备的2GB范围的寻址 因此官方推荐将READ 6迁移到READ 10 READ 10具有2TB的寻址能力 对于800G的NVMe设备来说当然是极好的 其实READ 10具有更
  • 【解决】手机安卓已经导入burp证书,但仍提示此证书并非来自被信任的机构

    安卓手机已经安装burpsuite证书 但app应用软件仍无法访问https联网 浏览器可以访问http但https提示此证书并非来自被信任的机构 这问题应该是安卓独有的 博主之前的模拟器访问完全没问题 最近突然无法访问 用控制变量法 我改
  • 2013年11月26日星期二(t3dlib1剩余部分---2)

    接下来 继续进行T3DLIB1剩余部分 倒着进行 先进行bob碰撞检测 int DDraw BOB Collision BOBS BOB PTR bob1 BOB PTR bob2 if bob1 bob2 return 0 int wid
  • 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)

    陆陆续续又开始更新自己的博客 看来自我驱动能力还是不够啊 废话不多说了 之前的内容大概说了一下Unity的一些基础知识 接下来我们将要对一些基本功能做一些学习 大家都知道 一个游戏 少不了摄像机的参与 这不是废话么 没摄像机怎么玩 画面都不
  • linux脚本的注释符号是什么,Shell中的变量和符号

    Shell中的变量 变量 shell 变量 可以保存如路径名 文件名或者一个数字 变量名称可以由字母 数字和下划线组成 但是不能以数字开头 如果变量名是 2name 则是错误的 在Bash中 变量的默认类型都是字符串型 如果要进行数值运算
  • log4j2史诗级漏洞攻击重现

    早上来到公司 就听到安全团队的同事说log4j2有个高危漏洞 起初并不是很在意 想着一个日志框架能有啥高危漏洞嘛 但是仔细一看 居然是远程执行命令的漏洞 上次看到这个名字还是struts2 修复方法也很简单 升级log4j依赖版本到2 15
  • vue【element ui】el-date-picker 日期选择器控件 限制可选的开始时间和结束时间

    项目场景 总结一下日期控件实现开始日期 结束日期的选择范围限制 以便更符合实际情况 需求 1 开始时间和结束时间都不能选当前日期之后的时间 当前时间 2022年5月16日 2 先选开始时间的话 结束时间是在开始时间的后一周内选择 也就是不能
  • 实习中了解的互联网数仓

    大数据平台 之前在两家互联网企业都做过数仓相关方面的实习岗位 一家中大厂 一家大厂 在这里简单分享一些数仓在企业中实际的运作 方便一些对数仓有兴趣但尚未在企业中数仓岗位实践过的同学了解 数据开发平台 一般来说 中型或大型企业都会有自己的大数
  • 【Shell编程】条件判断

    系列文章 Shell编程 Shell中的正则表达式 Shell编程 字符截取命令cut printf命令 Shell编程 字符截取命令awk sed命令 目录 系列文章 按照文件类型进行判断 实例 测试上一条命令是否执行成功 编写一个she
  • 建立图(邻接矩阵、邻近表任选其一)的存储结构、实现图的深度优先遍历和广度优先遍历。

    include
  • Qt connect 中, SIGNAL,SLOT 与 lambda 对比

    简单的信息就不说了 主要谈谈区别 首先结论是 推荐用 lambda 格式绑定信号槽 个人看法 有其他建议欢迎讨论 具体原因如下 SIGNAL SLOT 是 Qt4 时期的方法 lambda 是 Qt5 引入的 新的总比老的好 SIGNAL
  • Java之spring新手教程(包教包会)

    Java Spring 一 之IoC以及bean的生命周期 文章目录 Java Spring 一 之IoC以及bean的生命周期 一 什么是Spring 二 Spring的核心 三 什么是耦合 四 spring项目的搭建 五 配置文件 六
  • js逆向 极验滑块(记录学习 3.17)

    目录 一 分析整体流程 1 点击按钮之前 2 点击按钮之后 3 滑动之后 二 还原底图 三 跟W值 aa 四 部分代码 目标网站 aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5
  • 服务启动后停止 mysql5.7不能启动(mysqld --initialize 命令)不能解决?看这里!!!

    mysqld initialize 命令创建了date文件之后还是不能启动mysql的解决办法 win10 mysql5 7 今天因为测试的原因 关掉了本机的mysql数据库服务 然后启动报错 然后就开始了为期两小时的寻找之路 第一种方法
  • [极客大挑战 2019]HardSQL

    我们用万能密码试了一下发现不可行 正常注入发现会过滤and 空格 但没过滤or 可以结合报错注入来做 extractvalue 1 concat 07xe 执行语句 updatexml 1 concat 07xe 执行语句 1 这里面我们用
  • 学习笔记-二分法查找

    二分法查找 要求必须是一个有序数组 才可以进行二分法查找 二分法运用到了递归回溯的思想 思路 1 确定中间数的坐标 mid left right 2 2 如果中间数大于查询的数 说明查询的数在左边 向左递归继续查询 此时left不变 rig