我需要用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++;
}
运行此代码后,first
和 last
(含(之间的索引是包含搜索值的所有索引。