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万+

使用示波器通过串口抓取数据波形

当我们在软件上发送一个数据,需要在示波器上正确的显示发送数据的波形时,这个过程是需要按照软件上串口配置的参数对示波器进行调节的,本次使用的示波器(型号为RIGOL DS1102Z-E)外观如下图所示,本次对采集波形的调节主要用到以下几处按钮。具体是两条导线T+连接R+、T-连接R-,连接完毕后,打开XCOM软件,首先配置好参数后打开串口,如下所示,若在发送窗口发送数据在接收窗口可以实时显示到的话,证明串口的收发功能是正常的。1.CH1、CH2是示波器上的两个采集通道,本次波形采集使用的是CH1通道。

weixin_58061628的博客 1万+

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

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

Cqy180的博客 5244

Ships Dataset:解锁海洋探索的数字宝库

在海上交通管理中,通过对船舶的持续跟踪,可以及时发现船舶的异常行为,如偏离航线、超速等,保障海上航行的安全。例如,通过分析船舶的航行数据和位置信息,合理安排船舶的停靠时间和装卸货物顺序,避免港口拥堵,提高船舶的周转率。同时,还精确标注了船舶在图像中的位置坐标,通过这些坐标,我们可以准确地定位船舶在图像中的具体位置,为后续的分析和处理提供了精确的依据。从繁忙运输货物的货船,到承载着能源使命的油轮,再到穿梭于海洋寻找鱼群的渔船 ,每一种船舶都有着独特的外形和功能,在数据集中留下了它们的身影。

qq_38220914的博客 1267

微信小程序导航栏滑动一定距离后固定到顶部

接上一篇文章的内容,通常在一个页面中部会有一个导航栏查看不同的内容,这篇文章旨在实现在页面下滑的过程中导航栏自动固定到顶部以便我们阅读过程中的切换。 下滑一段距离后自动固定到顶部 首先,思考这个功能应该是怎么实现的: 在页面下滑的过程中,我们希望系统应当能识别下滑了多少距离,当原本的导航栏逐渐被遮住以后(遮住意味着下滑了特定距离),触发这个功能,执行另一种样式,将导航栏固定在页面顶端,同时如果我们将页面往上滑,系统能识别到原来的导航栏能露出来了(即距离顶端的高度小于一个特定的值),这时候又执行最初的样式

Oblivision_Geek的博客 4033

二分算法(java超详细)

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

lll123789456hhh的博客 1万+

光伏5G多合一融合终端|光伏多合一融合终端|光伏多合一群调群控网关|分布式光伏群控群调|光伏AGC/AVC系统这几者之间什么技术关系,多少钱一套预算?

RCL-0923光伏电站电压\功率自动控制装置(光伏AVC/AGC),能够接收调度DMS下发的调节目标(电压或无功),按既定策略的调节目标计算光伏电站无功功率出力需求,支持总有、无功,最大可调范围、逆变器个数等数据的上送,通过选择控制设备并进行无功功率出力分配,并将最终控制指令自动下达给被控制设备,最终实现光伏电站无功功率控制,实现无功功率、并网点电压的监测和控制,跟踪调度中心下发的电压或无功调节目标值,实现分布式电源的可观可测,可调可控。光伏5G多合一融合终端的功能:群调群控/AGC/AVC功能。

分布式DTU物联网DTU 2608

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

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

暗星涌动 2544

北斗导航 | ChatGPT之RTK、RTD、ARAIM算法原理及程序代码(ChatGPT看你怎么回答,附部分代码)

ChatGPT之RTK、RTD、ARAIM算法原理及程序代码

尘世冰封的专栏 3679

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1817

二分查找详解(Java)

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

weixin_45969711的博客 8029

会话管理技巧——如何优化OpenClaw的上下文理解能力(2026进阶版)

本文深入探讨了OpenClaw系统的会话管理技术,重点介绍了会话定义、生命周期管理和上下文优化策略。会话管理包含会话ID、用户信息、状态等核心要素,以及创建、维护、终止和恢复四个生命周期阶段。上下文管理通过ContextManager类实现,支持创建、更新、消息添加和变量管理等功能,并采用历史记录机制确保会话连续性。ContextOptimizer类则负责应用优化规则,通过消息和变量压缩等技术提升系统性能。这些技术共同构建了OpenClaw强大的会话管理能力,为AI助手提供了高质量的交互体验基础。

博客 493

二分查找Java实现

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

weixin_45923633的博客 309

【人工智能论文发表】基于医学病例文本和多模态大模型的医疗影像分割方法研究

摘要:本研究提出MMS-Former,一种基于级联多模态Transformer的文本引导医学图像分割框架。该模型创新性地将临床文本信息深度融入图像分割全过程,通过SwinUNETR提取视觉特征,ClinicalBERT编码病历文本,并在解码器的每个上采样阶段通过交叉注意力模块实现多级文本特征融合。实验表明,相比纯视觉模型,MMS-Former在Dice系数和IoU指标上分别提升3%以上,在处理边界模糊目标时表现尤为突出。模型还设计了结合Dice损失和图文对比损失的复合目标函数,确保分割精度与语义对齐。代码实

u012133341的博客 141

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

weixin_35723036的博客 329

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

二分查找 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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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、付费专栏及课程。

余额充值