概述
binarysearch为在指定数组中查找指定值得索引值,该值在范围内找得到则返回该值的索引值,找不到则返回该值的插入位置,如果该值大于指定范围最大值则返回-(maxlength+1),而:
int w=Arrays.binarySearch(a,1,5,8);
查找的范围为索引值1-5,:2,3,4,5,6
8并不在此范围中,且8大于最大索引值的6,所以返回-(5+1):-6
解析
查看java源码,可以看到,binarySearch()方法是重载方法,提供了两种形参方式:
小贴士:binarySearch()方式内部实现用的是二分法查找,所以在查找前需要将数组进行排序,且数组中不能出现相同元素,否则查找出来的索引会不清楚是哪一个的:
1)默认范围(数组长度)查找指定值索引:
格式:
binarySearch(object[ ], object key);
如果key在数组中,则返回搜索值的索引;否则返回-1(key小于数组中的任意一个元素)或者”-“(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。
key的值在数组范围内则索引从0开始计数;
key值不存在数组范围内(大于数组最小元素)则从1开始计数;