package com.hao.myrxjava;
/**
* 折半查找 :首先数组是已经排好序的
*
* @author zhanghaohao
* @date 2017/5/15
*/
public class HalfDivision {
/**
* 循环实现
*
* @param array 排好序的数组
* @param value 查找的值
* @return value在array的位置
*/
public static int halfDivision(int value, int[] array) {
if (array == null || array.length == 0)
throw new NullPointerException("array is null");
int low = 0;
int high = array.length - 1;
int mid = (low+high)/2;
while (array[mid] != value) {
if (array[mid] > value)
high = mid - 1;
else
low = mid + 1;
if (low > high)
return -1;
mid = (low+high)/2;
if (array[mid] == value)
return mid;
}
return mid;
}
/**
* 递归实现
*
* @param array 排好序的数组
* @param value 查找的值
* @param low 查找的起始位置
* @param high 查找的末尾位置
* @return value在array的位置
*/
public static int halfDivision(int value, int[] array, int low, int high) {
if (low > high)
return -1;
int mid = (low + high) / 2;
if (array[mid] == value)
return mid;
else if (array[mid] > value)
return halfDivision(value, array, low, mid - 1);
else if (array[mid] < value)
return halfDivision(value, array, mid+1, high);
return -1;
}
}
相关推荐
数据结构折半查找算法(C语言版)
折半查找算法 顺序表 折半查找算法C语言版
折半查找(二分查找)
折半查找是一种高效的算法,适用于有序数组中的元素查找,时间复杂度是O(logn)。通过逐步缩小查找范围,可以快速定位目标元素。
本地部署gradle
在部署CAS构建执行包时,如果按照CAS的官方命令gradlew clean build,如果系统没安装过gradle,这个步骤将会从网上下载gradle,但是进度非常慢,耗时很长。为了更快地完成项目构建,我们可以直接在本地部署好gradle,节省一点时间。
android二分查找法简书,算法——二分查找实例详解
介绍简介条件:数组有序作用:查找数组中的某个值算法描述: 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。基本模版int binarySearch(int[] nums, ...
计算机技术发展5大阶段,现阶段计算机技术应用及发展
【摘要】现代计算机科学技术的发展和普及运用,为世界各国民众基础性生产生活实践活动的组织开展路径造成了深刻影响,本文围绕现阶段计算机技术应用及发展,择取两个具体方面,展开了简要分析。【关键词】计算机技术;应用;发展改革开放以来,计算机设备的广泛运用,促进了计算机科学技术的逐步发展成熟。计算机科学技术是具备新兴表现特征的尖端应用技术,其在现代工业生产和社会生活实践活动过程中的广泛引入运用,给世界各国基...
STM32入门教程:WiFi通信
STM32是一款强大的嵌入式系统开发平台,可以用于开发各种应用程序,包括WiFi通信。在本教程中,我们将介绍如何使用STM32开发板和WiFi模块进行无线通信。以下是一个详细的代码案例,涵盖了WiFi通信的基本概念和实现。
android二分查找法简书,二分查找法
优缺点二分查找又称折半查找。优点:比较次数少,查找速度快,平均性能好。缺点:要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。举个例子首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一...
【思博伦】史上最详细Spirent TestCenter测试仪2544套件使用图文教程精讲!图解超赞超详细!!!
Avalanche测试仪使用指南 摘要:本文介绍了Avalanche测试仪的基本配置和使用方法。该测试仪采用Linux内核系统,通过端口模拟客户端与服务器端,支持HTTP、DNS、FTP等多种协议。文章详细讲解了管理IP配置、端口占用、项目创建、客户端/服务器端的参数设置(包括负载模拟、行为配置、网段设置等),以及测试执行和结果查看的全流程。特别针对HTTP测试,说明了测试前的组网准备和注意事项,包括IP地址规划、License申请等。同时提供了2544套件的时延和吞吐量测试方法,包括参数配置技巧和结果分析
黑马程序员____折半查找算法
----------------------android培训、java培训、期待与您交流! ---------------------- 折半查找( Binary Search)是查找有序序列的标准过程,比顺序查找有效得多,但它需要元素是有序的。它把查找序列平均分成两半,如划分点元素不是我们所要查找的元素,则在有可能包含查找元素的子序列中查找,重
重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年!
Unity,小游戏开发。 本篇文章对童年经典小游戏——炸弹超人进行制作和解析。不知道有没有勾起你童年的回忆呢!快来和我一起制作这个童年经典的小游戏吧! 敬请品尝!
零承诺的启动之路:详解 SAP BTP 的 Pay-As-You-Go for SAP BTP(含案例与迁移策略)
SAP BTP的Pay-As-You-Go(PAYG)模式为零承诺的按需付费方案,适合PoC和小规模上线场景。它提供生产环境直接启用服务的能力,按月后付标准目录价,无预付和折扣。PAYG可与BTP企业协议(BTPEA/CPEA)混合使用,用量稳定后可平滑迁移至CPEA获取更好财务条款。关键优势在于灵活开启/关闭服务,支持通过SAP Discovery Center估算费用,并配合成本治理工具控制支出。该模式适用于创新项目初期,当业务规模可预测时再考虑转为承诺型消费模式。
查找算法 之 二分查找的细节点梳理
二分查找
人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码)
OpenGL ES 利用抠图算法实现人像留色。
二分查找(折半查找)总结
** 二分查找(折半查找)总结 ** 文章目录二分查找(折半查找)总结一、基本概念二、编写代码1.二分查找2.测试代码三、输出结果四、总结评价 一、基本概念 二分查找也叫折半查找,是一种效率比较高的查找方法。但是使用它有个前提:必须是采用顺序存储的线性表,表中按关键字有序排列,一般情况为按数值从小到大排列。 折半查找的过程为: 从表的中间记录开始,将查找值与其比较,如果相等则查找结束 如果中间值小于查找值,则查找值一定在表的后一半区间里,于是将左值设置为中间位置的下一个 如果中间值大于查找值,则查找值一
CVPR 2026 即插即用 | 注意力篇 | MSEF:超轻注意力,空间-通道双分支并行融合,既增强特征又抑制噪声!
Multinex提出了一种超轻量级微光图像增强框架,其核心创新是MSEF模块。MSEF采用双分支并行架构,结合空间局部特征(深度可分离卷积)和全局通道注意力(改进SE),通过Tanh激活实现特征增强与抑制。相比传统注意力模块,MSEF在几乎不增加计算量的情况下显著提升性能,特别适合轻量级网络和边缘设备部署。实验表明,该模块能有效提升PSNR约3dB,同时保持极低的参数量(0.7K-45K)。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
二分查找(折半查找)
1.二分查找算法(JAVA) 1.二分查找又称折半查找,它是一种效率较高的查找方法。 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
JAVA二分查找/折半查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找时间复杂度为O(log2n),具体关于时间复杂度的推理大家可以去看百度百科!!! package com.algorithm; import java.util.Arrays; /** * 面试锦集: * 二分查找/折半查...
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
折半查找(二分查找)
文章目录1 原理2 实现2.1 原理代码实现2.2 具体应用2.3 扩展 1 原理 适用于 经常查找的,但是 不变的(增删)的 有序列表 算法思想: 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功 优缺点: 优点:比较次数少,查找速度快,平均性能好 缺点:要求待查表为有序表,且插入删除困难 折半查找方法适用于不经常变动而查找频繁的有序列表 原理图: 2 实现 2.1 原理代码实现 // 折半查找 (二分查找) public class Bi
折半查找(二分查找)的理解
目录折半查找的算法思想查找过程演示折半查找的判定树代码实现 折半查找的算法思想 折半查找又称二分查找,仅适用于有序的顺序表 首先将给定值key与表中中间位置元素的关键字比较, 若相等,则返回该元素的位置; 若不等,则在前半部分或者是后半部分进行查找。 查找序列升序时, 若key小于中间元素,则查找前半部分; 若key大于中间元素,则查找后半部分。 重复该过程,直到找到查找的元素为止,或查找失败。 查找过程演示 mid = (low + high)/2 向下取整 mid = 29,大于16,查前半部
7.3.折半查找(二分查找)
对于一个折半查找,如果查找区间为[low,high],中间指针mid = ( low + high ) / 2,且每次对比的是mid指针指向的数据元素,那么在查找判定树中对于任何一个结点都有"在同一个根结点下,右子树结点数-左子树结点数=0或1(右子树结点数不小于左子树结点数)"如果包含失败结点,那么折半查找(二分查找)的树高h为h+1。
查找-折半查找(二分查找)
折半查找 折半查找,也称为二分查找。其要求是数据是有序的,即表中元素按关键字有序。 比如有序表是递增有序的。首先取这表中的中间的数据与关键值(给定值key)比较的关系。若key>表的中间值,则说明key存在于表的中间值的右侧。因此,中间值右侧的区间又要取出中间值再与key比较,以此类推,直至查找成功或者区间缩小为0时还找不到就结束。 若key有与表中某区间 的中间值相等,则说明查找成功...
4331



被折叠的 条评论
为什么被折叠?



