Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么java Arrays.binarySearch在未找到时返回(-(插入点)-1_Java_Binary Search - Fatal编程技术网

为什么java Arrays.binarySearch在未找到时返回(-(插入点)-1

为什么java Arrays.binarySearch在未找到时返回(-(插入点)-1,java,binary-search,Java,Binary Search,我目前正在尝试学习java Arrays.binarySearch,请参见下面的Oracle文档: Arrays.binarySearch(int[] a, int fromIndex, int toIndex, int key) 返回: 搜索键的索引,如果它包含在 指定范围;否则,((插入点)-1)** 如果找不到,我不知道为什么在这里返回-(插入点)-1?为什么不直接返回-1或-(插入点)?(插入点)-1的想法是什么?因为它提供了额外的信息,而这些信息在其他情况下是不可用的。所以它需要一个

我目前正在尝试学习java Arrays.binarySearch,请参见下面的Oracle文档:

Arrays.binarySearch(int[] a, int fromIndex, int toIndex, int key)
返回:

搜索键的索引,如果它包含在 指定范围;否则,((插入点)-1)**


如果找不到,我不知道为什么在这里返回-(插入点)-1?为什么不直接返回-1或-(插入点)?(插入点)-1的想法是什么?

因为它提供了额外的信息,而这些信息在其他情况下是不可用的。所以它需要一个插入点来传递信息。问题是,插入点可能是0。那么,如何区分0处的匹配和插入点0处的失败呢?您必须使用-1才能进行区分。

因为它提供了其他情况下无法获得的额外信息。所以它需要一个插入点来传递信息。问题是,插入点可能是0。那么,如何区分0处的匹配和插入点0处的失败呢?您必须使用-1才能进行区分。

@swis,是的,我明白了,谢谢。@swis,是的,我明白了,谢谢。