黑马程序员技术交流社区

标题: binarysearch的一个小知识点 [打印本页]

作者: WJN_YES    时间: 2014-8-25 16:52
标题: binarysearch的一个小知识点
class A{
public static void main(String args[]){
  
  int a[]=new int []{1,2,3,4,5,6,7,21,115};
  Arrays.sort(a);
int w=Arrays.binarySearch(a,1,5,8);
  
  System.out.print(w);
}

}
为什么是-6?

回答:返回值:   如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)

     插入点 被定义为将键插入数组的那一点:即第一个大于此键的元素索引 ,如果数组中的所有元素都小于指定的键,则为 a.length。注意 ,这保证了当且仅当此键被找到时,返回的值将 >= 0。否则返回 (-(插入点) - 1)这句话要注意:要是查询的的值小于数组里面的最小值那么结果(-(0)-1结果就是-1),如果查询的值大于数组里面的最大值。那么结果就是(-(它的索引值)-1结果就是-(1+索引值)),这里定义为low=1,high=5,也就是2-6这几个数要找的8>6,所以结果就是-(索引值+1),8所在的索引值是5,(2 3  4 5 6 8,这样排列8是在第5个位置上)所以结果为-(1+5)=-6




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2