Java实现二分查找

Java实现二分查找算法 欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。前言不知道大家玩过这么一个游戏没---猜数字大小。先在心... 阅读详情

二分查找是一种高效的查找算法,其基本思想是,在一个有序的数组中,先和数组最中间的值进行比较,如果小于最中间的这个值,则将查找范围缩小为左半部分,大于则将查找范围缩小为右半部分,每次缩小一半的查找范围,直至找到与这个数相等的数。当数据量比较大的时候,二分查找相对于顺序查找,显示出明显的优势。

下图为二分查找的一个示例

接下来我们对二分查找进行实现,本文介绍两种实现方法。

while循环法

public static int rank(int key,int[] a){
		int lo = 0; //最低位
		int hi = a.length-1; //最高位
		while(lo<hi){
			int mid = lo+(hi-lo)/2; //求出中间位
			if(key<a[mid]) 
				hi = mid-1;
			else if(key>a[mid])
				lo = mid+1;
			else
				return mid;
		}
		return -1;
	}

递归法

public static int rank(int key,int[] a,int lo,int hi){
    if(lo<hi){
        int mid = lo+(hi-lo)/2;
        if(key==a[mid])
            return mid;
        else if(key<a[mid])
            return rank(key,a,lo,hi-1);
        else
            return rank(key,a,lo+1,hi);
    }
    else
        return -1;
}

 

Java实现数组二分查找算法 时间复杂度是指执行算法所需的计算工作量,它通常用来描述算法执行时间与输入数据大小之间的关系。对于二分查找而言,时间复杂度是衡量算法效率的重要标准。它关注的是随着数据量的增加,算法运行时间的变化趋势。 阅读详情

相关推荐

Java实现数组的高效二分查找算法

二分查找算法作为计算机科学中的一个经典搜索算法,凭借其高效的性能和易于实现的特点,成为处理有序数据集的重要工具。通过对二分查找原理的深入理解和应用,可以显著提升数据搜索的效率,特别是在大规模数据处理场景中表现突出。大O表示法用于描述函数的运行时间或空间需求如何随输入规模的增加而变化。例如,如果一个算法的时间复杂度是O(n),那么算法的执行时间将与输入数据的大小成线性关系增长。时间复杂度是评价算法性能的关键指标之一,理解不同算法的时间复杂度对于选择合适的算法至关重要。

weixin_31419153的博客 973

java实现二分查找

java实现二分查找

程序员阿龙的博客 1万+

MFC 利用soap 调用web service

MFC 利用soap 调用web service

congjiaoyan3682的博客 786

二分查找的5种实现--Java版

基础版,改动版,平衡版,java中的实现,对重复元素的处理(两种),力扣练习题链接,代码均以java实现

Cqy180的博客 5244

Matlab+Matpower实战:手把手教你生成IEEE14节点FDIA攻击数据集(附完整代码)

本文提供了一份基于Matlab与Matpower工具构建IEEE14节点FDIA攻击数据集的完整实战指南。通过动态负荷数据模拟、潮流计算、状态估计及隐蔽攻击向量注入,手把手教你生成可用于电力系统网络安全研究的仿真数据集,并附有核心代码与调试技巧。

bean的博客 399

2024年 Flutter 面试题大全(2024.6.28持续更新中)

2024年 Flutter 面试题大全(持续更新中)

Code Metaverse 6670

二分算法(java超详细)

二分法,查找算法,时间复杂度

lll123789456hhh的博客 1万+

Python 爬虫实战:爬取微博热搜与用户评论数据

本文系统讲解微博热搜榜单与用户评论数据的爬取技术方案。针对微博热搜榜采用Requests+BeautifulSoup解析静态HTML结构,实现高效爬取;对于动态加载的评论数据,使用Selenium模拟浏览器行为规避反爬机制。详细阐述技术选型、反爬策略、数据清洗及存储方法,提供完整代码实现和输出示例。同时强调合规要求,提示开发者需在遵守平台规则的前提下进行数据采集。该方案为舆情分析和热点研究提供了可落地的技术实现路径。

2503_91057718的博客 1717

Java 与查找算法(2)二分查找

二分查找,也称折半查找,是一种常见的查找算法。它的思想是将有序数组分成两部分,取中间位置的值与目标值进行比较,如果相等则返回该位置,如果目标值小于中间值,则在左半部分继续查找,否则在右半部分继续查找,直到找到目标值或者数组被遍历完。二分查找的时间复杂度为 O(log n),是一种高效的查找算法。但是它要求数组必须是有序的,因此在某些情况下,为了使用二分查找,需要先对数组进行排序。递归实现二分查找的核心思想是将数组不断地分成两半,直到找到目标值或者数组被遍历完。

暗星涌动 2544

RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10

Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本文将详细介绍如何使用Buildroot编译并配置Qt5WebEngine-5.15.10。Qt5WebEngine是Qt框架中的一个模块,它提供了一个功能强大的Web浏览器引擎,允许开发者在Qt应用程序中嵌入和显示现代网页内容。

flypig has a dream! 1159

00 — Intel xe SVM 内核实现精读系列专栏导读

本文系统介绍了Intel Xe GPU的共享虚拟内存(SVM)实现机制。第一部分通过概念地图阐述SVM的六个核心概念及其关系;第二部分通过三个测试用例解析SVM关键功能:fault生命周期验证、madvise与VRAM迁移、跨GPU一致性;第三部分深入内核实现,包括初始化/销毁流程、Page Fault处理、MMU Notifier失效路径、异步垃圾回收、VRAM迁移机制、madvise实现原理,以及与ROCm SVM的对比。文章建议按功能模块顺序学习,从基本概念到测试用例,再深入内核实现细节,最后对比不同

图形/计算GPU的驱动与虚拟化技术分享园地 1675

二分查找详解(Java)

在我们了解二分查找之前,我们先来了解线性查找线性查找的思想:我们在对数组遍历的时候,通过每个值每个值的判断去实现我们的待查找的值是否存在当前数组中,如果存在就返回当前的索引。此时我们发现当前数组的顺序是无序的,当我们在有序数组中去查找目标数的时候会出现什么样的情况呢?

weixin_45969711的博客 8029

2026年中科曙光嵌入式软件岗位面试题库(附参考答案)

嵌入式系统与C/C++基础摘要 硬件与外设总线 SPI总线:高速全双工同步串行接口,采用SCLK、MOSI、MISO和CS信号线,支持一主多从架构,典型应用于Flash存储、传感器等高速外设。 I2C总线:两线制低速串行总线(SDA/SCL),支持多主多从,需注意地址冲突和信号完整性。 时序约束:包括建立时间、保持时间、时钟周期等,是保障电路稳定运行的关键。 AD转换:将模拟信号转换为数字信号,应用于传感器采集、音频处理等场景。 PC寄存器:存储下一条指令地址,控制程序执行流,在跳转和中断时自动更新。 C/

Open 70

二分查找Java实现

1.二分查找Java实现 package Test00; //二分查找 /* 二分查找又叫做折半查找,要求查找的序列有序,每次查找都取中间位置的值与待查的位置的值比较,如果中间的值比 待查的数值大,则在序列的左半部分继续查找;反之,在右半部分查找。直到查找到关键字位置。 如果没有查找到,则返回-1 * */ public class binarySearch { publ...

weixin_45923633的博客 309

RK3566/RK3568 Android 11 无操作自动隐藏导航栏、底部上拉显示导航栏

RK3566/RK3568 Android 11 定制大全在系统服务中增加无操作自动隐藏导航栏方法,在上层app动态调用无操作自动隐藏导航栏方法,系统会在5秒无操作后自动隐藏导航栏,隐藏导航栏后从底部上拉可显示导航栏,设备关机和重启后也能继续生效。

qq_23921815的博客 1260

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java实现二分查找算法_Java实现二分查找算法实例分析

本文实例讲述了Java实现二分查找算法。分享给大家供大家参考。具体如下:1. 前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2. 原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部...

weixin_35723036的博客 329

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

二分查找 java代码实现

二分查找java代码 package csdn.dreamzuora.query; /** * Title: 二分查找 * Description: * 时间复杂度:log2N * @version 1.0 * @author: weijie * @date: 2020/10/16 13:52 */ public class BinarySearch implements Search { int[] array; public BinarySearch(int[] arr

dreamzuora的博客 349

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java实现二分查找算法_Java实现的二分查找算法

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。public class BinarySearch {/*** 二分查找算法** @param srcArray 有序数组* @param key 查找元素* @return key的数组下标,没找到返回-1*/public static void main(String[] args) {i...

weixin_42298332的博客 337

Java实现二分查找法

本教程将介绍Java中的二进制搜索和递归二进制搜索,以及其算法,实现和Java Binary Seach代码示例: Java中的二进制搜索是一种用于在集合中搜索目标值或键的技术。它是一种使用“分而治之”技术搜索密钥的技术。 应用二进制搜索来搜索关键字的集合需要按升序排序。 通常,大多数编程语言都支持用于搜索集合中数据的线性搜索,二进制搜索和哈希技术。我们将在后续教程中学习哈希。 Java中的二进制搜索 线性搜索是一项基本技术。在此技术中,顺序遍历数组,并将每个元素与键进行比较,直到找到键或.

allway2的博客 1万+

【二分查找的Java实现及其应用】

二分查找是一种在有序数组中查找特定元素的搜索算法。它的时间复杂度为 O(log n),对于大数据集具有较高的性能。

我是Java程序员廖志伟,感谢朋友们的支持! 1020
上一篇: 《统计学习方法》勘误表
下一篇: Java中对类进行初始化(主动引用,被动引用)
AE86上山啦
博客等级 码龄8年 5粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值