首先,binarySearch方法为二分法查找,所以数组必须是有序的或者是用sort()方法排序之后的

1)  binarySearch(Object[] a, Object key)

a: 要搜索的数组

key:要搜索的值

如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

技巧:

[1] 搜索值是数组元素,从0开始计数,得搜索值的索引值;【找到了】

[2] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;【找不到】

[3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);【找不到】

[4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。【找不到】

程序:int arr [] =newint[]{1,3,4,5,8,9};Arrays.sort(arr);int index1 = Arrays.binarySearch(arr,6);int index2 = Arrays.binarySearch(arr,4);int index3 = Arrays.binarySearch(arr,0);int index4 = Arrays.binarySearch(arr,10);System.out.println("index1 = "+ index1 +", index2 = " + index2 + ", index3 = " + index3 +", index4 = "+ index4);结果: index1= -5, index2 = 2, index3 = -1, index4 = -7

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

a:要搜索的数组

fromIndex:指定范围的开始处索引(包含)

toIndex:指定范围的结束处索引(不包含)

key:要搜索的值

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1或“-”(插入点)。

技巧:

[1] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索值的索引值;【找到了】

[2] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引值”;【找不到】

[3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1);【找不到】

[4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)。【找不到】

程序:int arr [] =newint[]{1,3,4,5,8,9};System.out.println(arr.length+1);Arrays.sort(arr);int index5 = Arrays.binarySearch(arr,1, 4, 6);int index6 = Arrays.binarySearch(arr,1, 4, 4);int index7 = Arrays.binarySearch(arr,1, 4 ,2);int index8 = Arrays.binarySearch(arr,1, 3, 10);int index9 = Arrays.binarySearch(arr,1, 3, 0);System.out.println("index5 = "+ index5 +", index6 = " + index6 + ", index7 = " + index7 +", index8 = "+ index8 +", index9 = " + index9);结果:index5 = -5, index6 = 2,index7 = -2, index8 = -4, index9 = -2

转载于:https://www.cnblogs.com/haimishasha/p/11460557.html

JAVA基础系列:Arrays.binarySearch二分查找相关推荐

  1. Java基础 【Arrays 类的使用】

    package com.zuoyan.sort;import java.util.Arrays;public class ArraysClassDemo {public static void mai ...

  2. 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  3. 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. 夯实Java基础系列20:从IDE的实现原理聊起,谈谈那些年我们用过的Java命令

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  5. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. string substring的用法_夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战...

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  7. 夯实Java基础系列9:深入理解Class类和Object类

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  8. 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)

    本人初学<算法(第四版 谢路云译)>有一段时间了,对于初学者按书敲完第一个BinarySearch二分查找算法发现运行错误,我相信大家跟我一样内心是崩溃的.还好经过翻看多个相关论坛以及自己 ...

  9. 夯实Java基础系列22:一文读懂Java序列化和反序列化

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

最新文章

  1. pytorch nn.Embedding
  2. 虚拟机安装Ubuntu14.04打开FireFox提示Server not found
  3. Python之并行--基于joblib
  4. [蓝桥杯][2019年第十届真题c/c++B组]迷宫(寻找路径bfs及文件输入输出)
  5. 【方便自己使用】KKT条件
  6. oracle还原脚本,oracle自动恢复脚本
  7. systemctl不可用时,使用service命令关闭防火墙
  8. 从零开始学习MXnet(四)计算图和粗细粒度以及自动求导
  9. Android Media Framework(1): 总纲
  10. 计算机学科技术前沿:INFOCOM和SIGCOMM会议信息
  11. 如何在网上隐藏自己的IP地址
  12. IT名人博客推荐(15个)
  13. H3C防火墙-安全域配置举例
  14. IGBT晶圆在新能源汽车充电桩领域的应用
  15. 研发管理-质量与效率提升-混沌工程在携程的实践
  16. configure使用说明
  17. 案例|全球蛙,如何从山西“跳”到全国?
  18. gstreamer AV sync
  19. python飞机大战联网版_Python 飞机大战搞怪版本
  20. WML语言基础(WAP建站)一(转)

热门文章

  1. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
  2. 我可以做些什么来提高应用程序的可用性?
  3. ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证
  4. C#中面向对象编程中的函数式编程
  5. 100m光纤测速多少正常_光纤收发器的分类知识详解
  6. redis 消息队列 过段时间不能下发_以Redis来谈消息队列
  7. angular ts 表格_angular表格内容滚动实现
  8. 大学物理光学思维导图_头晕/眩晕问诊最全思维导图,赶紧收藏!
  9. 深度神经网络训练过程中为什么验证集上波动很大_图神经网络的新基准
  10. python求50的阶乘_python如何求阶乘