Java binarysearch方法原理详解

 更新时间:2020年01月29日 11:12:36   作者:dyhaohaoxuexi  
这篇文章主要介绍了Java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先 数组排序需要import java.util.Arrays类

binarysearch有两个用法,一个是在整个数组里搜索,一个是在指定范围搜索,其实都是差不多的,可以将前者视为后者的特殊情况。

用法1

binarySearch(Object[], Object key)

Object是目标数组,key是目标值,要求目标数组必须要经过排序的,否则无法找到正确的结果

查询无非就是两种结果,一种是目标值在目标数组里,另一种是不在

所以返回值也分为正负两种,目标值在目标数组内的,返回下标(如果有多个相同的,无法确定找到的是哪个,因为是二分搜索)

目标值不在数组内的,返回 -(第一个大于目标值的元素的下标+1),类似的,如果数组内的值都比目标值小,则是返回-(数组长度+1)

样例:

import java.util.Arrays;
public class number {
  public static void main(String[] args) {
  int a[] = new int[] {1, 3, 4, 6, 8, 9}; 
  int x1 = Arrays.binarySearch(a, 5); 
  int x2 = Arrays.binarySearch(a, 4); 
  int x3 = Arrays.binarySearch(a, 0); 
  int x4 = Arrays.binarySearch(a, 10);
  System.out.println(x1+" "+x2+" "+x3+" "+x4);
  }      
}

输出:

-4 2 -1 -7

也可以这么理解:

对应相应的位置输出即可。

用法2

binarySearch(Object[], int fromIndex, int toIndex, Object key)

加了两个int变量,代表区间的开始和结束,从fromindex(包含)到toindex(不包含)这个区间里面搜索,返回值和前面用法1类似,唯一有所不同的是,当如果区内的值都比目标值小,则是返回-(toindex+1),如果区间内的值都比目标值大,则返回-(fromindex+1),仔细想想不难理解,用法1就相当于fromindex为0且toindex为数组长度的用法2。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java播放声音类和一个简单示例

    java播放声音类和一个简单示例

    这篇文章主要介绍了一个java播放声音类和一个java播放声音的应用程序,应用程序可以单次播放声音、循环播放声音,需要的朋友可以参考下
    2014-03-03
  • Spring中@ControllerAdvice注解的用法解析

    Spring中@ControllerAdvice注解的用法解析

    这篇文章主要介绍了Spring中@ControllerAdvice注解的用法解析,顾名思义,@ControllerAdvice就是@Controller 的增强版,@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,需要的朋友可以参考下
    2023-10-10
  • Spring Cloud Feign报错问题解决

    Spring Cloud Feign报错问题解决

    这篇文章主要介绍了Spring Cloud Feign报错问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java中你绝对没用过的一个关键字Record的使用

    Java中你绝对没用过的一个关键字Record的使用

    这篇文章主要给大家介绍一个 Java 中的一个关键字 Record,那 Record 关键字跟不可变类有什么关系呢?看完今天的文章你就知道了,快跟随小编一起学习一下吧
    2022-11-11
  • Java 如何从list中删除符合条件的数据

    Java 如何从list中删除符合条件的数据

    这篇文章主要介绍了Java 如何从list中删除符合条件的数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java遍历读取xml文件内容

    java遍历读取xml文件内容

    这篇文章主要为大家介绍了java遍历读取xml文件内容,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Java关于IO流的全面介绍

    Java关于IO流的全面介绍

    下面小编就为大家带来一篇Java关于IO流的全面介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 因BigDecimal类型数据引出的问题详析

    因BigDecimal类型数据引出的问题详析

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算,下面这篇文章主要给大家介绍了因BigDecimal类型数据引出的问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • Java中的 FilterInputStream简介_动力节点Java学院整理

    Java中的 FilterInputStream简介_动力节点Java学院整理

    FilterInputStream 的作用是用来“封装其它的输入流,并为它们提供额外的功能”。接下来通过本文给大家分享Java中的 FilterInputStream简介,感兴趣的朋友一起学习吧
    2017-05-05
  • 详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类

    详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类

    这篇文章主要介绍了Alibaba Java诊断工具Arthas查看Dubbo动态代理类 ,它可以帮助我们查看JDK或者javassist生成的动态代理类,当然,它的功能远不止此,还可以在生产环境进行诊断,需要的朋友可以参考下
    2022-04-04

最新评论