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

二分查找 分块查找

二分查找(折半查找)

前提条件:数组中的数据必须是有序的

核心逻辑:每次排除一半的查找范围

代码案例:

总结:

1.二分查找的优势?

提前查找效率

2.二分查找的前提条件?

数据必须是有序的

如果数据是乱的,先排序再用二分查找得到的索引没有实际意义,只能确定当前数字在数组中是否存在,因为排序之后数字的位置就可能发生变化了

3.二分查找的过程

min和max表示当前要查找的范围

mid是在ain和max中间的

如果要查找的元素在mid的左边,缩小范围时,min不变,max等于mid减1

如果要查找的元素在mid的右边,缩小范围时,max不变,min等于mid加1

插值查找(二分查找的改进)

斐波那契查找:

小结:

1.二分查找、插值查找,斐波那契额查询各自的特点

相同点:

都是通过不断的缩小范围来查找对应的数据的

不同点:

计算mid的方式不一样

二分查找:mid每次都是指向范围的中间位置

插值查找:mid尽可能的靠近要查找的数据,但是要求数据尽可能的分布均匀

斐波那契额查找:根据黄金分割点来计算mid指向的位置

分块查找:

代码案例:

先写个Javabeen

class block {
    private int max;
    private int startIndex;// 起始索引
    private int endIndex;// 结束索引


    public block() {
    }

    public block(int max, int startIndex, int endIndex) {
        this.max = max;
        this.startIndex = startIndex;
        this.endIndex = endIndex;
    }

    
    public int getMax() {
        return max;
    }

  
    public void setMax(int max) {
        this.max = max;
    }

    
    public int getStartIndex() {
        return startIndex;
    }

    
    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }

    
    public int getEndIndex() {
        return endIndex;
    }

    
    public void setEndIndex(int endIndex) {
        this.endIndex = endIndex;
    }

}


http://www.kler.cn/a/517377.html

相关文章:

  • 复位信号的同步与释放(同步复位、异步复位、异步复位同步释放)
  • YOLOv10-1.1部分代码阅读笔记-val.py
  • 【工程篇】01:GPU可用测试代码
  • STM32_SD卡的SDIO通信_基础读写
  • CPU 缓存基础知识
  • 08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)
  • redis报错如何解决
  • 戴尔电脑设置u盘启动_戴尔电脑设置u盘启动多种方法
  • capter7:全局内存的合理使用
  • C++ 线程安全之互斥锁
  • 《机器学习数学基础》补充资料:超平面
  • 【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例
  • 关于hexo-deploy时Spawn-Failed的几种解决方案
  • Mysql面试题----什么是垂直分表、垂直分库、水平分库、水平分表
  • 【华为OD-E卷 - 计算网络信号 100分(python、java、c++、js、c)】
  • 「 机器人 」扑翼飞行器控制方法浅谈
  • Go的垃圾回收(GC)机制
  • 如何在 Spring Boot 中实现自定义属性
  • 计算机视觉算法实战——驾驶员安全带检测
  • 2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题8)
  • 深入理解 HTML DOM:文档对象模型详解
  • windows系统改变vscode的插件位置
  • 【Bug 记录】el-sub-menu 第一次进入默认不高亮
  • 【17】组织测试(一)
  • 组件封装-List
  • kettle与Springboot的集成方法,完整支持大数据组件