Java中Arrays类中的binarySearch方法详解

1.它有很多重载的方法:

static intbinarySearch(byte[] a, byte key)
使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
static intbinarySearch(byte[] a, int fromIndex, int toIndex, byte key)
使用二分搜索法来搜索指定的 byte 型数组的范围,以获得指定的值。
static intbinarySearch(char[] a, char key)
使用二分搜索法来搜索指定的 char 型数组,以获得指定的值。
static intbinarySearch(char[] a, int fromIndex, int toIndex, char key)
使用二分搜索法来搜索指定的 char 型数组的范围,以获得指定的值。
static intbinarySearch(double[] a, double key)
使用二分搜索法来搜索指定的 double 型数组,以获得指定的值。
static intbinarySearch(double[] a, int fromIndex, int toIndex, double key)
使用二分搜索法来搜索指定的 double 型数组的范围,以获得指定的值。
static intbinarySearch(float[] a, float key)
使用二分搜索法来搜索指定的 float 型数组,以获得指定的值。
static intbinarySearch(float[] a, int fromIndex, int toIndex, float key)
使用二分搜索法来搜索指定的 float 型数组的范围,以获得指定的值。
static intbinarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
static intbinarySearch(int[] a, int fromIndex, int toIndex, int key)
使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。
static intbinarySearch(long[] a, int fromIndex, int toIndex, long key)
使用二分搜索法来搜索指定的 long 型数组的范围,以获得指定的值。
static intbinarySearch(long[] a, long key)
使用二分搜索法来搜索指定的 long 型数组,以获得指定的值。
static intbinarySearch(Object[] a, int fromIndex, int toIndex,Object key)
使用二分搜索法来搜索指定数组的范围,以获得指定对象。
static intbinarySearch(Object[] a,Object key)
使用二分搜索法来搜索指定数组,以获得指定对象。
static intbinarySearch(short[] a, int fromIndex, int toIndex, short key)
使用二分搜索法来搜索指定的 short 型数组的范围,以获得指定的值。
static intbinarySearch(short[] a, short key)
使用二分搜索法来搜索指定的 short 型数组,以获得指定的值。
static
<T> int
binarySearch(T[] a, int fromIndex, int toIndex, T key,Comparator<? super T> c)
使用二分搜索法来搜索指定数组的范围,以获得指定对象。
static
<T> int
binarySearch(T[] a, T key,Comparator<? super T> c)
使用二分搜索法来搜索指定数组,以获得指定对象
主要操作对象为数组,前提:数组中的元素需要按从小到大的顺序排好序(需要使用Arrays.sort排序一下)

常用方法:binarySearch(数组[],值)

常用的数组和值的类型可以是beye、short、int、float、double、char

二分法查找先查找数组中间的元素,如果找到就返回数组中该元素的下标,如果没找到就返回-插入点-1

比如  int[] a = {1,3,5,7,8,9};
int b = 10;

  int binarySearch = Arrays.binarySearch(a, b);
System.out.println(binarySearch);

   返回的是-7:(插入点下标为6,返回-6-1 就是-7)


如果没有找到就判断需要找的值是否大于数组中间的元素的值,然后把数组分为左右两边,再根据大小判断去左边还是右边,依次查找下去。

如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。

优点:查找效率比一般的从数组中从左到右挨个挨个的查找的平均查找时间要快

前提:数组的元素需要排序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wf13265

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值