Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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.binary搜索多个匹配项?_Java_Arrays_Binary Search - Fatal编程技术网

Java arrays.binary搜索多个匹配项?

Java arrays.binary搜索多个匹配项?,java,arrays,binary-search,Java,Arrays,Binary Search,我需要使用Arrays.binarySearch方法查找排序数组中的所有元素。我想在lowerbound=pos+1中迭代二进制搜索(pos是上一个匹配),但是binarySearch不保证返回第一个匹配(最小匹配索引) 如何进行此操作?您可以轻松使用binarySearch的结果获取所有匹配项: long[] sortedArr = ... int index = Arrays.binarySearch (sortedArr, value); int first = index; int la

我需要使用
Arrays.binarySearch
方法查找排序数组中的所有元素。我想在
lowerbound=pos+1
中迭代二进制搜索(
pos
是上一个匹配),但是
binarySearch
不保证返回第一个匹配(最小匹配索引)


如何进行此操作?

您可以轻松使用
binarySearch
的结果获取所有匹配项:

long[] sortedArr = ...
int index = Arrays.binarySearch (sortedArr, value);
int first = index;
int last = index;
if (index >= 0) {
    while (first > 0 && sortedArr[first-1] == value)
        first--;
    while (last < sortedArr.length - 1 && sortedArr[last+1] == value)
        last++;
}
long[]分类器=。。。
int index=Arrays.binarySearch(sortedar,value);
int first=索引;
int last=索引;
如果(索引>=0){
while(first>0&&sortedar[first-1]==值)
第一--;
while(last

运行此代码后,
first
last
(包括)之间的索引都是包含搜索值的索引。

我让它像您一样。我只是想知道,也许我可以用“一行”的方式迭代。没有大括号的循环不会通过这里的代码审查。