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
| binarySearch(T[] a, int fromIndex, int toIndex, T key,Comparator<? super T> c) 使用二分搜索法来搜索指定数组的范围,以获得指定对象。 | |
static
| binarySearch(T[] a, T key,Comparator<? super T> c) 使用二分搜索法来搜索指定数组,以获得指定对象 |
常用方法: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)
如果没有找到就判断需要找的值是否大于数组中间的元素的值,然后把数组分为左右两边,再根据大小判断去左边还是右边,依次查找下去。
如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
优点:查找效率比一般的从数组中从左到右挨个挨个的查找的平均查找时间要快
前提:数组的元素需要排序