Java 学习和实践笔记(51):二分法查找(折半检索)

二分法查找(折半检索)又叫binary search.

要在一堆数据中查找是否存在某一个已知数,二分法查找的步骤:

第一步,对数据实现排序

第二步,将该数与排序后的数据集的中间一个数进行比较

第三步,如果该数等于这个中间数,那就找到了,返回位置索引。

如果该数大于这个中间数,那么再对右边的数进行对半查找。

如果该小于这个中间数,那么再对左边的数进行对半查找。

重复第三步,直到找到为止。

示例代码:

import java.util.Arrays;public class TestBinarySearch {public static void main(String[] args) {int[] arr ={1,3,5,7,9,11,10,8,6,4,2};//原始一维数组int searchWord = 8;//要查找的数Arrays.sort(arr);//先排序System.out.println("排序后的数据是"+Arrays.toString(arr));System.out.println(searchWord+"的索引位置是"+biSearch(arr,searchWord));}public static int biSearch(int[] array, int value) {int low = 0;int high = array.length - 1;int i = 0;while (low <= high) {int middle = (low + high) / 2;i=i+1;System.out.println("第"+i+"次二分后,当前中间数是"+array[middle]);if (value == array[middle]) {return middle;}if (value > array[middle]) {low = middle + 1;}if (value < array[middle]) {high = middle - 1;}}return -1;//找不到返回-1
}}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP S/4HANA的常见部署方式

SAP S/4HANA是SAP面向企业数字化转型推出一代商务ERP 套件&#xff0c;与传统的SAP ERP系统相比&#xff0c;它基于内存计算和先进的数据处理技术&#xff0c;提供更快的数据处理速度、实时分析和更好的用户体验。SAP S/4HANA可以根据企业的需求以多种部署方式进行实施&#xf…

Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(二)项目实现-第二篇-前端模块搭建及单点登录的实现

本文参考自 Springboot3微服务实战12306高性能售票系统 - 慕课网 (imooc.com) 本文是仿12306项目实战第&#xff08;二&#xff09;章——项目实现 的第二篇&#xff0c;详细讲解使用Vue3 Vue CLI 实现前端模块搭建的过程&#xff0c;同时其中也会涉及一些前后端交互的实现&am…

分享webgl魔幻星球

界面截图 webgl 是在网页上绘制和渲染三维图形的技术&#xff0c;可以让用户与其进行交互。divcss、canvas 2d 专注于二维图形。 对公司而言&#xff0c;webgl 可以解决他们在三维模型的显示和交互上的问题&#xff1b;对开发者而言&#xff0c;webgl 可以让我们是实现更多、更…

[从零开始学习Redis | 第九篇] 深入了解Redis数据类型

前言&#xff1a; 在现代软件开发中&#xff0c;数据存储和处理是至关重要的一环。为了高效地管理数据&#xff0c;并实现快速的读写操作&#xff0c;各种数据库技术应运而生。其中&#xff0c;Redis作为一种高性能的内存数据库&#xff0c;广泛应用于缓存、会话存储、消息队列…

栈的ADT实现——有空间限制的栈

1、研究有空间限制的栈的原因 当我们使用很多软件时都有类似“undo”功能,比如Web浏览器的回退功能、文本编辑器的撤销编辑功能。这些功能都可以使用Stack实现,但是在现实中浏览器的回退功能也好,编辑器的撤销功能也好,都有一定的数量限制。因此我们需要的不是一个普通的Sta…

齐护机器人方位传感器指南针罗盘陀螺仪

一、方位传感器原理及功能说明 齐护方位传感器是一款集成了三轴磁传感器芯片的方位传感器模块。适用于无人机、机器人、移动和个人手持设备中的罗盘&#xff08;指南针&#xff09;、导航和游戏等高精度应用。模块可以感应XYZ平面角度外&#xff0c;还可实现1至2的水平面角度罗…

【精品教程】护网HVV实战教程资料合集(持续更新,共20节)

以下是资料目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a; 01-HW介绍.zip 02-HTTP&Burp课程资料.zip 03-信息收集_3.zip 04-SQL注入漏洞_2.zip 05-命令执行漏洞.zip 06-XSS漏洞.zip 07-CSRF.zip 08-中间件漏洞.zip 09-SSRF.zip 10-XXE.zip 11-Java反序列…

用栈实现队列-使用两个栈来实现队列,则使我们插入的元素依照先入先出原则即可

一、用栈实现队列 https://leetcode.cn/problems/implement-queue-using-stacks/ &#xff08;一&#xff09;分析题目 &#xff08;二&#xff09;编写代码 typedef char STDataType; typedef struct Stack {STDataType* a; //int top; //相当于数组下标&#xff0c;注意…

idea 中 大于等于,不等于、小于等于等等这些符号发生了改变问题解决方法

1.问题描述 idea 中&#xff01;变为 ≠、 >变成了≥、<变成了 ≤ 等问题的解决办法 展示效果如下截图 解决方法

Spark 部署与应用程序交互简单使用说明

文章目录 前言步骤一&#xff1a;下载安装包Spark的目录和文件 步骤二&#xff1a;使用Scala或PySpark Shell本地 shell 运行 步骤3:理解Spark应用中的概念Spark Application and SparkSessionSpark JobsSpark StagesSpark Tasks 转换、立即执行操作和延迟求值窄变换和宽变换 S…

设计模式总结-外观模式(门面模式)

外观模式 模式动机模式定义模式结构外观模式实例与解析实例一&#xff1a;电源总开关实例二&#xff1a;文件加密 模式动机 引入外观角色之后&#xff0c;用户只需要直接与外观角色交互&#xff0c;用户与子系统之间的复杂关系由外观角色来实现&#xff0c;从而降低了系统的耦…

leetcode.面试题 02.07. 链表相交

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 思路 假a在链表A上移动,b在链表B上移动&#xff0c;a移动完在B上开始&…

mysql中主键索引和联合索引的原理解析

mysql中主键索引和联合索引的原理解析 一、主键索引二、什么是联合索引? 对应的B树是如何生成的?1、建立索引方式2、什么是最左前缀原则?3、回表4、为什么要遵守最左前缀原则才能利用到索引?5、什么是覆盖索引?6、索引扫描底层原理7、order by为什么会导致索引消失&#x…

OA系统:把复杂流程和操作简单化,十分考验设计对业务的理解。

面向企业端的管理系统功能是越来越臃肿&#xff0c;每个厂商都想把功能做的大而全&#xff0c;如果不这么做就会给你留下市场空挡给竞争对手&#xff0c;在这种复杂化不可逆转的情形下&#xff0c;如何用操作简单化呢&#xff0c;本文给出几点建议。 1. 简化流程&#xff1a; …

opencv使用问题记录一二

opencv介绍 opencv是一个计算机视觉处理软件库&#xff0c;拥有强大的功能和高效的性能。 但是由于早期版本的原因&#xff0c;存在一些与目前主流使用不兼容的问题 问题与解决 RGB通道顺序 一般图片处理类库的通道顺序就是RGB&#xff0c;但是opencv的是反过来的&#xf…

RabbitMQ小记

参考书籍&#xff1a;朱忠华的《RabbitMQ实战指南》 一、基础概念 1.Exchange 1.1 创建方法的参数&#xff0c;exchangeDeclare() exchange&#xff1a;交换器的名称type&#xff1a;交换器的类型durable&#xff1a;是否持久化&#xff0c;true代表持久化。&#xff08;持…

【APUE】网络socket编程温度采集智能存储与上报项目技术------多路复用

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

Git命令(1)[删除,恢复与移动]

文章目录 1.删除文件1.1命令----rm <filename>1.2命令----git rm <filename>1.1命令----git rm <filename> -f 2.恢复文件2.1命令----git restore <filename>2.1命令----git restore --staged <filename> 3.重命名文件3.1命令----mv 旧文件 新文…

八股面试速成—Java语法部分

暑期实习面试在即&#xff0c;这几天八股和算法轮扁我>_ 八股部分打算先找学习视屏跟着画下思维导图&#xff0c;然后看详细的面试知识点&#xff0c;最后刷题 其中导图包含的是常考的题&#xff0c;按照思维导图形式整理&#xff0c;会在复盘后更新 细节研究侧重补全&a…

租用阿里云的服务器多少钱?30元、61元、99元、165元、199元

租个阿里云的服务器多少钱&#xff1f;很便宜&#xff0c;云服务器2核2G3M固定带宽99元一年、2核4G服务器30元3个月、199元一年&#xff0c;轻量应用服务器2核2G3M配置61元一年、2核4G4M带宽165元一年&#xff0c;可以在阿里云CLUB中心查看 aliyun.club 当前最新的优惠券和活动…