java 内置二分查找binarySearch使用汇总

  • 1.java.util.Arrays提供了在数组中的二分查找方法binarySearch
binarySearch

public static int binarySearch​(Object[] a, Object key)

参数 
a - 要搜索的数组 
key - 要搜索的值 

使用二进制搜索算法在指定的数组中搜索指定的对象。 所述阵列必须根据被按升序排列natural ordering元素(如由sort(Object[])方法)之前使该呼叫。 如果未排序,则结果未定义。 (如果数组包含不可相互比较的元素(例如,字符串和整数),则无法根据其元素的自然顺序对其进行排序,因此结果未定义。)如果数组包含多个等于指定对象的元素,无法保证会找到哪一个。

返回值:
搜索键的索引,如果它包含在数组中; 否则, (-(insertion point) - 1) 。 插入点定义为键将插入到数组中的点:第一个元素的索引大于键,或者如果数组中的所有元素都小于指定键, a.length 。 请注意,当且仅当找到密钥时,这才能保证返回值> = 0。




binarySearch

public static int binarySearch​(Object[] a, int fromIndex, int toIndex, Object key)

参数 
a - 要搜索的数组 
fromIndex - 要搜索的第一个元素(包括)的索引 
toIndex - 要搜索的最后一个元素(不包括)的索引 
key - 要搜索的值 

返回值:
搜索关键字的索引,如果它包含在指定范围内的数组中; 否则, (-(insertion point) - 1) 。 插入点定义为键将插入到数组中的点:范围中第一个元素的索引大于键,或者如果范围中的所有元素都小于指定键, toIndex 。 请注意,当且仅当找到密钥时,这才能保证返回值> = 0。




  • 2.java.util.Collections提供了给实现了List接口的有序集合使用的二分查找方法binarySearch
public static <T> int binarySearch​(List<? extends Comparable<? super T>> list, T key)


参数类型 
T - 列表中对象的类 
参数 
list - 要搜索的列表
key - 要搜索的密钥

使用二进制搜索算法在指定列表中搜索指定对象。 该列表必须根据被按升序排列natural ordering元素(如由sort(List)方法)之前使该呼叫。 如果未排序,则结果未定义。 如果列表包含多个与指定对象相等的元素,则无法保证找到哪个元素。
该方法在log(n)时间内运行“随机访问”列表(其提供接近恒定时间的位置访问)。 如果指定的列表没有实现RandomAccess接口并且很大,则此方法将执行基于迭代器的二进制搜索,该搜索执行O(n)链接遍历和O(log n)元素比较。

返回值:
搜索关键字的索引,如果它包含在列表中; 否则, (-(insertion point) - 1) 。 插入点定义为键将插入列表的点:第一个元素的索引大于键,或者如果列表中的所有元素都小于指定键, list.size() 。 请注意,当且仅当找到密钥时,这才能保证返回值> = 0。


你可能感兴趣的:(算法-java,java,开发语言,算法)