JAVA二分查找/折半查找

C语言中的二分查找(折半查找)超详细版 阅读详情

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找时间复杂度为O(log2n),具体关于时间复杂度的推理大家可以去看百度百科!!!

package com.algorithm;

import java.util.Arrays;

/**
 * 面试锦集: 
 * 二分查找/折半查找
 *
 * @author 小辉GE/小辉哥
 * <p>
 * 2019年8月6日 下午17:30:00
 */
public class BinarySearch {

	public static void main(String[] args) {
		// 定义数组,随机生成数据
		Integer[] arry = { 36, 12, 35, 69, 56, 89, 71, 100, 101, 12, 36 };
		// 先排序
		Arrays.sort(arry);
		System.out.println("arry数组排序后为:" + Arrays.toString(arry));

		int index = binarySearch(arry, 101);
		if (index > -1) {
			System.out.println("二分查找方式找到该数据,数组下标为:" + index + "对应值是:" + arry[index]);
		} else {
			System.out.println("二分查找方式未到该数据");
		}
	}

	public static int binarySearch(Integer[] arry, int val) {
		// 定义初始最小、最大下标
		int start = 0;
		int end = arry.length - 1;
		// 控制while条件
		while (start <= end) {
			// 计算出中间位置下标,需要避免溢出
			int middle = (end + start) >>> 1;
			if (val == arry[middle]) {
				return middle;
			} else if (val < arry[middle]) {
				// 重新定义最大下标界限
				end = middle - 1;
			} else {
				// 重新定义最小下标界限
				start = middle + 1;
			}
		}
		return -1;
	}

}

测试输出结果如下:

以上代码仅供参考,如有不当之处,欢迎指出!!!

更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!

 

 

Java实现二分查找(折半查找) 1 问题描述 首先,了解一下何为折半查找?此处,借用《算法设计与分析基础》第三版上一段文字介绍: 2 解决方案 2.1 递归法 package com.liuzhen.chapter4; public class BinarySearch { //方法1:递归求解 public void recursionSearch(int[] A,int start,int end,int... 阅读详情

相关推荐

英特尔® NUC迷你电脑实现无人值守自动开机配置指南

本文详细介绍了如何配置英特尔® NUC迷你电脑实现无人值守自动开机功能。从BIOS设置到操作系统级配置,涵盖硬件兼容性确认、电源恢复功能设置及常见问题解决,帮助用户轻松实现设备断电后自动恢复运行,适用于家庭服务器、企业终端等多种场景。

weixin_42638178的博客 472

java实现二分查找

java实现二分查找

程序员阿龙的博客 1万+

PSCAD学习笔记(1)Project Settings(重点snapshot设置)

若不勾选,则横坐标为实际时间2-7s,故障显示在第3s发生。图片中时间坐标轴显示为0-5s,故障时刻显示为第1s,即0-1s展示系统稳态,1-5s展示系统发生故障后的暂态响应,如何通过快照文件实现?勾选该项后,使用快照文件启动仿真会将仿真起始时间强制设置为0s,反之不勾选则依据快照文件保存的时间轴继续(即坐标为实际时间)。如果已有的快照文件保存的是0s至5s的仿真内容,则仿真运行时间从5s开始,到10s结束。如果已有的快照文件保存的是0s至2s的仿真内容,则仿真运行时间从2s开始,到7s结束;

gwenh的博客 7342

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

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

Cqy180的博客 5243

二维otsu算法python_OpenCV-Python系列之OTSU算法

上一个教程中,我们谈到了关于图像二值化的两种方法,一种是固定阈值法,另一种是自适应阈值法,总的来说,自适应阈值法在某些方面要由于固定阈值法,但还没完,这次我们将隆重介绍我们的重量级选手,也就是OTSU算法(又称为大津算法和最大类间方差法)。最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像...

weixin_28834169的博客 1426

Whisper 模型在嘈杂环境中的表现:降噪与增强技术

本报告系统分析了OpenAI Whisper模型在嘈杂环境中的表现机制,重点揭示其内在降噪能力的技术边界,并结合语音增强(SE)、时频分析等前沿技术提出优化方案。内容覆盖从基础概念(如噪声类型对ASR的影响)到理论框架(模型架构与数学形式化),再到实际应用(端到端部署策略)的全链路分析,同时通过案例研究与可视化工具(如梅尔频谱对比图)降低复杂概念的认知门槛。核心结论指出:Whisper的多语言预训练虽提升了泛化性,但在低信噪比(SNR<5dB)场景下需结合前端降噪或联合训练技术以突破性能瓶颈。

AI 原生应用开发的博客 488

二分查找详解(Java)

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

weixin_45969711的博客 8029

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 84

二分算法(java超详细)

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

lll123789456hhh的博客 1万+

使用verilog实现基于FPGA的TDC设计

verilog实现TDC 高精度时间数字转换器概述(TDC) 简介: TDC被用于测量时间间隔,应用在物理研究、飞行时间测量领域等。 本设计使用verilog实现并在xilinx和altera的FPGA上均可实现! 设计中使用到下述几个模块,包括FIFO,COUNT等,在xilinx下也使用到了一些原语等。下面有实现的代码和仿真截图等。 顶层模块设计如下: module top( input wire start, input wire stop, input wire clk, output wire T

QQ_778132974的博客 6253

逆向分析-SeparationPreview.aip-分色预览-结构分析(一)-x64dbg条件日志打印-命令表达式-PS脚本

从功能上分析,仅显示使用的专色这个功能,并没有触发插件接口。使用X64dbg加载illustrator进程,切换到句柄窗口,在窗口过程中,右键刷新获取界面。在x64dbg中,在UI中可以输入一些条件表达式,能够计算出对应的值,并打印在日志中。常用的,如果非暂停,输出第一个参数。参数二是utf16的指针,utf16@字符串地址,这里的字符串地址为[[ebp-108]]参数一是utf8的,utf8@字符串地址,这里的字符串地址为[ebp-28]从界面上分析,一个颜色列表,及仅显示专色的多选框组成。

插件开发 643

二分查找详解(Java版)

二分查找算法是一种高效的搜索算法,适用于 有序数组。它通过将查找范围不断减半,逐步缩小目标值的搜索空间,最终找到目标元素或确认目标不存在。

记得开心一点嘛的博客 2449

达梦数据库修改最大连接数

达梦数据库的最大连接数推荐配置与服务器内存有关。不应设置得过大,否则容易导致出现OOM。文件中整型的参数值。DSC环境下,除了特殊参数以外,其他参数值会在OK节点上同步。返回值:当前DM.INI文件中对应的参数值。功能说明:返回DM.INI文件中。:DM.INI文件中的参数名。

Sebastien23的博客 3331

Java 二分查找/折半查找

二分查找/折半查找

小钟不想敲代码 356

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java实现二分查找/折半查找

java实现二分查找/折半查找

2301_80798250的博客 317

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java折半查找算法递归_递归实现二分查找/折半查找——Java/算法/蓝桥杯

package 递归;public class zebanchazhao {/*** 二分查找又称折半查找,它是一种效率较高的查找方法。【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。* @author Administrator**/public static void main(String[] args) {int[] src = new int[] {1, 3, ...

weixin_39612057的博客 181

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

二分查找算法/折半查找算法(用Java实现)

二分查找算法(java详解)

qq_60654083的博客 776

递归实现二分查找/折半查找——Java/算法/蓝桥杯

package 递归; public class zebanchazhao { /** * 二分查找又称折半查找,它是一种效率较高的查找方法。   【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 * @author Administrator * */ public static void main(String[] args) { ...

薛剑文大大的博客 437

算法:折半查找、二分查找(Java/Go)

要求数组已经排好序。 Java语言 /** * 二分查找/折半查找 */ public class BinarySearch { /** * 递归 * @param array * @param start 查找范围内的最小索引 * @param end 查找范围内的最大索引 * @param target * @...

BruceBupt的博客 496

数据结构java(十四)查找——线性(折半查找/二分查找)

1.算法思想 条件:1.必须采用顺序储存 2.有序排列 首先,将表中间位置记录下来,与查找元素进行进行比较。若相等,则查找成功;否则将其表以中间位置分成,前后两个子表,查找的元素小于中间位置元素,则进一步查找前一子表,否则进一步查找后一子表。循环或递归相同操作,直到查找相同返回序号,否则元素不存在。 2.效率 a.非递归 时间复杂度:T(n) = O(log2n) 空间复杂度:S(n)...

菜鸟_zhengke的博客 279

黑马Java零基础视频教程精华部分_15_基本查找/顺序查找、二分查找/折半查找、插值查找、斐波那契查找、分块查找、哈希查找

Java实现各种查找算法

buyaotutou的博客 1084

C/C++每日一练(20230316) 两数之和、验证回文串、有序表折半查找

1. 两数之和 II ★   2. 验证回文串★   3. 有序表的折半查找★★★

汉阳Hann's Home 675

Java实现二分查找算法(折半查找)

代码实现与过程分析 import java.util.Arrays; //导包,因为要用到Arrays类里面的toString方法和sort方法 /** * 标题:Java实现二分查找算法(折半查找) * 作者:Nstar * 时间:2020年3月27日 */ public class Test28{ public static void main(String[] args)...

Nstar的技术博客 2835

二分查找(折半查找)

1.二分查找算法(JAVA) 1.二分查找又称折半查找,它是一种效率较高的查找方法。 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部...

kior的博客 1793

Java实现折半查找(二分查找)

一、折半查找是什么? 折半查找是一种在有序数组中查找某一特定元素的搜索算法。它的设计思想是这样的:设查找的范围是数组的第一个元素(下标为minIndex)到数组的最后一个元素(下标为maxIndex),首先看处于这个范围正中间的元素(下标为midIndex)是否就是要搜索的元素,如果是,直接返回这一个下标;如果不是,分为两种情况,一种是比中间的这一个元素要小,此时查找的范围修改第...

1371

二分查找/折半查找的原理和技巧

package practice; import java.util.Scanner; public class 二分查找 { public static int[] maopao(int[] args) {//可以接收也可以不接收 for (int i = 0; i < args.length; i++) { for (int j = 0; j < args.length -...

嘉会的博客 800
上一篇: 详解JAVA冒泡排序
下一篇: 面试锦集:JAVA中存在i+1小于i的情况吗?
饶艳辉
博客等级 码龄15年 20粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值