二分查找法

简介: 二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

1)算法原理:

又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置
的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,
则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
(2)代码示例:

/**
 * 二分查找
 * @param srcArray 源数组
 * @param des 目标元素
 * @return 如果找到则返回索引位置,找不到则返回-1
 */
public static int binarySearch(int[] srcArray, int des) {
    //定义初始最小、最大索引
    int start = 0;
    int end = srcArray.length - 1;
    //确保不会出现重复查找,越界
    while (start <= end) {
        //计算出中间索引值  >>> 逻辑右移 也就是 int middle = (end + start)/2
        int middle = (end + start)>>>1 ;//防止溢出
 
        if (des == srcArray[middle]) {
            return middle;
            //判断下限
        } else if (des < srcArray[middle]) {
            end = middle - 1;
            //判断上限
        } else {
            start = middle + 1;
        }
    }
    //若没有,则返回-1
    return -1;
}
目录
相关文章
|
5月前
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
8月前
|
存储 安全 虚拟化
Omnissa ThinApp 2503 - 应用虚拟化软件
Omnissa ThinApp 2503 - 应用虚拟化软件
355 8
Omnissa ThinApp 2503 - 应用虚拟化软件
|
9月前
|
Java 数据库连接 Maven
【YashanDB知识库】私有maven使用崖山JDBC驱动
本文介绍如何将YashanDB的JDBC驱动包(yashandb-jdbc-1.5.1.jar)安装到Maven本地仓库。通过使用`mvn install:install-file`命令,指定参数如`-Dfile`(jar路径)、`-DgroupId`、`-DartifactId`和`-Dversion`等,可完成打包。之后,在项目中只需在`pom.xml`中添加对应依赖即可使用该驱动,方便集成与管理。
|
分布式计算 大数据 数据处理
经典大数据处理框架与通用架构对比
【6月更文挑战第15天】本文介绍Apache Beam是谷歌开源的统一数据处理框架,提供可移植API,支持批处理和流处理。与其他架构相比,Lambda和Kappa分别专注于实时和流处理,而Beam在两者之间提供平衡,具备高实时性和数据一致性,但复杂性较高。选择架构应基于业务需求和场景。
919 3
经典大数据处理框架与通用架构对比
|
4月前
|
固态存储 Windows
固态硬盘如何正确分区?SSD实用分区方案
固态硬盘(SSD)已成为提升电脑速度的关键。本文详解SSD正确分区方法,避免性能下降与寿命缩短,教你如何合理分区分区、设置4K对齐,并提供Windows磁盘管理与DiskGenius两种实用分区方案,助你高效使用SSD。
|
12月前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
499 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
9月前
|
数据采集 监控 安全
电商项目中如何选择安全高效的电商数据采集API接口?
选择电商项目数据采集接口时,需综合考虑需求、性能、安全性、成本和合规性等因素。如果平台提供官方API,优先选择API接口;如果没有API或API无法满足需求,可以考虑网页抓取或其他数据采集方式。在实际操作中,建议进行充分测试和监控,确保数据采集的稳定性和准确性。
|
12月前
|
编解码
网站视频下载工具分享
[Cobalt](https://cobalt.tools/) 是一款无广告、无跟踪器的高效媒体下载器。它支持全平台内容下载,包括B站、YouTube、Instagram等,涵盖视频、音频、字幕等格式,分辨率从480P到8K+。无需注册,直接使用,简单快捷。还提供批量下载和自定义选项,提升下载效率。
|
存储 机器学习/深度学习 人工智能
【AI系统】指令和存储优化
在AI编译器底层,除了广泛应用的循环优化外,还存在指令优化和存储优化两大类。指令优化通过利用硬件提供的特殊加速指令,如向量化和张量化,提高计算效率;存储优化则关注如何高效管理数据存储与访问,减少延迟,提高整体计算效率。这些技术共同作用,极大提升了AI系统的性能。
224 1
如何访问GitHub快的飞起?两步解决访问超时GitHub,无法访问GitHub的问题
这篇文章提供了几种方法来解决访问GitHub时速度慢或超时的问题,包括使用代理服务器、下载加速工具,以及考虑使用国内代码管理网站如码云(gitee)来加速下载GitHub上的资源。
如何访问GitHub快的飞起?两步解决访问超时GitHub,无法访问GitHub的问题

热门文章

最新文章