相关疑难解决方法(0)

Collections.binarySearch(列表,K键)澄清.Java的

鉴于以下语句,取自 Oracle Java教程,与类Collections的binarySearch()方法有关:

两个表单的返回值相同.如果List包含搜索键,则返回其索引.如果不是,则返回值为 ( - (插入点) - 1),其中插入点是将值插入List的点,或者第一个元素的索引大于值或list.size ()如果List中的所有元素都小于指定值.

为什么返回值binarySearch()不仅仅返回负指数而不是负指数减1?(上面引用的粗体部分).

简而言之:为什么(-(insertion point) - 1)而不仅仅是(-(insertion point))

提前致谢.

java return binary-search

7
推荐指数
2
解决办法
4629
查看次数

为什么二进制搜索方法将负返回值减少 1

说说Arrays中定义的这个方法:

public static int binarySearch(int[] a, int key)
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么返回(-(insertion point) - 1)而不是-(insertion point)在数组中找不到匹配项的情况。

https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(int[],%20int)

这可能是Math.abs((-(insertion point) - 1))等于数组大小的原因吗?

如果你想知道我为什么要问这个问题,我看到为了找到插入点,我基本上必须做减法。

int returnedVal = Arrays.binarySearch(arr, needle);
if (returnedVal < 0) 
     insertionPoint = Math.abs(returnedVal) - 1; 
Run Code Online (Sandbox Code Playgroud)

java arrays binary-search

0
推荐指数
1
解决办法
412
查看次数

标签 统计

binary-search ×2

java ×2

arrays ×1

return ×1