Java中Arrays类中的binarySearch方法详解

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

static int binarySearch(byte[] a, byte key)
使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key)
使用二分搜索法来搜索指定的 byte 型数组的范围,以获得指定的值。
static int binarySearch(char[] a, char key)
使用二分搜索法来搜索指定的 char 型数组,以获得指定的值。
static int binarySearch(char[] a, int fromIndex, int toIndex, char key)
使用二分搜索法来搜索指定的 char 型数组的范围,以获得指定的值。
static int binarySearch(double[] a, double key)
使用二分搜索法来搜索指定的 double 型数组,以获得指定的值。
static int binarySearch(double[] a, int fromIndex, int toIndex, double key)
使用二分搜索法来搜索指定的 double 型数组的范围,以获得指定的值。
static int binarySearch(float[] a, float key)
使用二分搜索法来搜索指定的 float 型数组,以获得指定的值。
static int binarySearch(float[] a, int fromIndex, int toIndex, float key)
使用二分搜索法来搜索指定的 float 型数组的范围,以获得指定的值。
static int binarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。
static int binarySearch(long[] a, int fromIndex, int toIndex, long key)
使用二分搜索法来搜索指定的 long 型数组的范围,以获得指定的值。
static int binarySearch(long[] a, long key)
使用二分搜索法来搜索指定的 long 型数组,以获得指定的值。
static int binarySearch(Object[] a, int fromIndex, int toIndex,Object key)
使用二分搜索法来搜索指定数组的范围,以获得指定对象。
static int binarySearch(Object[] a,Object key)
使用二分搜索法来搜索指定数组,以获得指定对象。
static int binarySearch(short[] a, int fromIndex, int toIndex, short key)
使用二分搜索法来搜索指定的 short 型数组的范围,以获得指定的值。
static int binarySearch(short[] a, short key)
使用二分搜索法来搜索指定的 short 型数组,以获得指定的值。
static
int
binarySearch(T[] a, int fromIndex, int toIndex, T key,Comparator c)
使用二分搜索法来搜索指定数组的范围,以获得指定对象。
static
int
binarySearch(T[] a, T key,Comparator 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)


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

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

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

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

你可能感兴趣的:(Java中Arrays类中的binarySearch方法详解)