Java Arrays binarySearch()插入点

时间:2016-08-06 16:53:13

标签: java arrays binary-search

根据Armans.binarySearch的Java doc(int [] a,int key)

  

返回:

     

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

我需要理解为什么返回(-(insertion point) - 1),为什么不只是-(insertion point)

2 个答案:

答案 0 :(得分:17)

因为如果它返回-(insertion point),并且插入点为0,那么你将无法区分我发现它,它在索引0 I没有找到它,你可以插入索引0

答案 1 :(得分:3)

考虑一个数组:

int intArr[] = {5,12,20,30,55};

现在考虑这两个二进制搜索语句:

System.out.println("The index of element 5 is : " + Arrays.binarySearch(intArr,5));

System.out.println("The index of element 4 is : " + Arrays.binarySearch(intArr,4));

<强>输出

The index of element 5 is : 0
The index of element 4 is : -1

因为-1,我们可以区分两个输出。如果没有-1,那么这两个语句都会给出相同的输出,即0