Java binarysearch方法原理详解

Java binarySearch方法原理详解

什么是binarySearch方法

binarySearch方法是Java Util API提供的的一个静态方法,用于在有序数组中二分查找指定的值。

binarySearch方法原理

binarySearch方法实际上是对比给定值与数组中间值的大小,如果给定值小于中间值,则继续在左半部分递归查找;如果大于,则在右半部分递归查找。这样每次查找的范围都会减半,最终定位到给定值所在的位置。

需要注意的是,这个方法仅适用于有序数组。如果数组是无序的,先要使用sort方法进行排序。

binarySearch方法的语法

public static int binarySearch(int[] arr, int key)
public static int binarySearch(int[] arr, int fromIndex, int toIndex, int key)

参数说明:

  • arr:指定的数组
  • key:要查找的值
  • fromIndex:要搜索的第一个元素的索引(包括)
  • toIndex:要搜索的最后一个元素的索引(不包括)

返回值:

  • 找到了指定元素,返回它的索引
  • 没有找到指定元素,返回负数,表示key应该插入到此位置以保证数组的有序性

binarySearch方法的使用

下面我们来看一下如何使用binarySearch方法:

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int key = 6;
int index = Arrays.binarySearch(arr, key);
System.out.println("index:" + index); // 输出:index:5

上面的代码中,我们声明了一个有序的数组arr,然后查找其中的元素6,binarySearch方法返回了该元素的索引5。

接下来我们来看一个key不存在于数组中的例子:

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int key = 20;
int index = Arrays.binarySearch(arr, key);
System.out.println("index:" + index); // 输出:index:-11

上面的代码中,我们查找不存在数组中的元素20,binarySearch方法返回了-11。这个返回值表示,如果要将元素20插入数组中,应该插入到第11个位置(从1开始),才能保证数组的有序性。

总结

binarySearch方法是一个非常高效的查找有序数组中的元素的方法。在使用时需要注意传入的数组必须是有序的。如果传入的数组是无序的,应首先使用sort方法对其进行排序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java binarysearch方法原理详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Spring RestTemplate具体使用详解

    Spring RestTemplate具体使用详解 简介 RestTemplate是Spring提供的专门用于调用Restful风格的Web服务的客户端工具,它封装了底层的HTTP连接以及常用的HTTP请求方法,包括GET、POST、PUT、DELETE等,可以大大简化我们调用Web服务的代码量。 基本用法 使用RestTemplate最基本的用法是通过创建…

    Java 2023年5月20日
    00
  • Java之Maven工程打包jar

    下面是讲解如何使用Maven对Java工程进行打包生成jar文件的攻略: 准备工作 安装Java 下载并安装Maven 创建一个Maven工程 打包jar文件步骤 在Maven工程的根目录下,打开命令行窗口,执行 mvn package 命令,Maven会自动进行编译和打包jar文件。 执行成功后,在Maven工程的 target 目录下,就可以看到一个以 …

    Java 2023年5月20日
    00
  • Java多线程模拟电影售票过程

    关于Java多线程模拟电影售票过程的攻略,可以分为以下几个步骤: 确定需求 在开始实现之前,需要首先明确需求。在本例中,我们需要模拟一个电影院售票过程。具体而言,要求程序能够模拟多个售票窗口同时对外售票,每个售票窗口需要从已有的电影票中售出一张票。当电影票售罄时,所有售票窗口需要停止售票。最后,统计每个售票窗口售出的票数以及总票数。 实现思路 在明确需求之后…

    Java 2023年5月26日
    00
  • Java中Maven项目导出jar包配置的示例代码

    下面将详细讲解“Java中Maven项目导出jar包配置的示例代码”的完整攻略。 配置pom.xml文件 首先打开项目中的pom.xml文件,确保其中包含以下内容: <!– 配置打包信息,默认为jar –> <packaging>jar</packaging> <!– 配置依赖信息 –> <dep…

    Java 2023年5月20日
    00
  • 基于jfreechart生成曲线、柱状等图片并展示到JSP

    生成曲线、柱状图等图片并展示到 JSP 页面是很常见的需求,而 JFreeChart 是一款 Java 的图表组件库,可以帮助我们轻松地生成各种类型的图表。下面是基于 JFreeChart 生成曲线、柱状等图片并展示到 JSP 的攻略: 1. 引入 JFreeChart 库和相关依赖 在项目中引入 JFreeChart 库和相关依赖。可以在 Maven 项目…

    Java 2023年6月15日
    00
  • java面试题之数组中的逆序对

    当我们在面试Java开发工程师时,通常会涉及到一些算法和数据结构知识。本文针对“数组中的逆序对”这道Java面试题,提供一份详细的攻略。 什么是数组中的逆序对? 数组中的逆序对指的是数组中左边的数比右边的数大,这样的一对数称为逆序对。 比如,对于数组[2, 4, 1, 3, 5],该数组中的逆序对为(2, 1),(4, 1),(4, 3)。 如何求解数组中的…

    Java 2023年5月19日
    00
  • SpringBoot Web依赖教程

    下面我将为您详细讲解“SpringBoot Web依赖教程”的完整攻略。 什么是SpringBoot Web依赖? SpringBoot是一个快速创建和开发Spring基础项目的框架,它自带了大量的依赖包,其中就包括了SpringBoot Web依赖。SpringBoot Web依赖可以让我们方便地创建Web应用程序,支持使用SpringMVC框架,并集成了…

    Java 2023年5月15日
    00
  • java简易小游戏制作代码

    针对“java简易小游戏制作代码”的完整攻略,分多个步骤进行讲解,主要包括以下内容: 1.确定游戏类型和规则 最开始需要确定游戏类型和规则,比如是否是基于控制台的文字游戏、还是需要使用图形界面开发的图形游戏。接着根据游戏类型和规则明确游戏的流程、操作、胜负条件等。 2.编写初始化函数 初始化函数的作用是为游戏做好初始化工作,比如初始化游戏界面、设置游戏参数、…

    Java 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部