A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WJN_YES 中级黑马   /  2014-8-25 16:52  /  1045 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马