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 Boot jpa Service层代码实例

    下面我将详细讲解“Spring Boot jpa Service层代码实例”的完整攻略。 什么是Spring Boot jpa Service层 Spring Boot是一个快速开发的框架,它可以轻松地构建基于Spring框架的Web应用程序。而JPA(Java Persistence API)是一种Java EE标准API,用于管理Java对象到关系数据库…

    Java 2023年5月20日
    00
  • SpringMVC中的Model对象用法说明

    下面是关于“SpringMVC中的Model对象用法说明”的完整攻略,包含两个示例说明。 SpringMVC中的Model对象用法说明 在SpringMVC中,Model对象是一个接口,它用于在控制器和视图之间传递数据。本文将介绍如何使用Model对象来传递数据,并提供两个示例说明。 步骤一:创建SpringMVC项目 首先,我们需要创建一个SpringMV…

    Java 2023年5月17日
    00
  • Java编程实现的二维数组转置功能示例

    下面我来详细讲解“Java编程实现的二维数组转置功能示例”的完整攻略。 什么是二维数组转置? 二维数组转置就是将原本按行存储的二维数组,按列存储重新排列的过程。例如,原先的二维数组表示为: 1 2 3 4 5 6 经过转置之后,变成了: 1 4 2 5 3 6 实现二维数组转置的方法 实现二维数组转置的方法有很多种,本篇文章主要介绍两种方式: 方法一:使用一…

    Java 2023年5月26日
    00
  • C#中方法的直接调用、反射调用与Lambda表达式调用对比

    C# 中调用方法主要有三种方式:直接调用、反射调用和Lambda表达式调用。这三种方式各有优缺点,接下来将进行详细的对比。 直接调用 直接调用是一种最常见的方法调用方式,也是最简单高效的方式。调用方法时,我们只需要知道方法名以及参数就可以进行调用。C# 中有两种直接调用方式:静态调用和实例调用。 静态调用 静态调用只需要使用类名就可以调用方法,不需要实例对象…

    Java 2023年5月19日
    00
  • iframe的各项参数整理附说明及使用示例

    iframe的各项参数整理附说明及使用示例 iframe是什么? iframe 全称是 Inline Frame,中文翻译为内联框架,是 HTML 的一种内嵌框架技术。通过它可以在网页中嵌入其它网页或者文档,可以说是一个在页面中嵌套显示其他 HTML 页面的容器。HTML 中真正的页面是父页面,iframe 中嵌套的是子页面。在父页面中,可以通过 ifram…

    Java 2023年6月16日
    00
  • IDEA反编译出整个jar包源码

    你好,关于“IDEA反编译出整个jar包源码”的完整攻略,我可以提供以下几个步骤: 步骤一:安装插件 首先,你需要在 IDEA 中安装一个名为 “JD-Eclipse”的插件。这个插件可以在 IDEA 中实现反编译的功能。安装插件可以按照 IDEA 的标准步骤进行,在 IDEA 的插件中心选择安装即可。 步骤二:打开jar包 打开 IDEA,选择 “File…

    Java 2023年5月26日
    00
  • 如何通过Java代码实现KMP算法

    下面我将为你讲解“如何通过Java代码实现KMP算法”的完整攻略。 1. 什么是KMP算法? KMP算法是一种字符串匹配算法,其全称是Knuth-Morris-Pratt算法,其主要思想是在匹配过程中充分利用已知信息,尽可能地减少比较次数,从而达到快速匹配的目的。 2. KMP算法的实现过程 2.1 计算字符串的next数组 在KMP算法中,关键在于如何计算…

    Java 2023年5月18日
    00
  • Springboot的spring-boot-maven-plugin导入失败的解决方案

    在使用Springboot开发时,可能会出现使用spring-boot-maven-plugin插件导入失败的情况。下面是解决方案的完整攻略: 1. 确认maven配置文件 在使用spring-boot-maven-plugin插件时,首先需要确认你的maven配置文件是否正确。在你的maven配置文件(settings.xml)中添加以下配置: <p…

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