gpt4 book ai didi

java - 二分查找中的第一次出现

转载 作者:IT老高 更新时间:2023-10-28 20:43:03 25 4
gpt4 key购买 nike

我正在修改一些代码,但我意识到了一些我从来不知道的事情。正常的二分搜索将在数据集中为多次出现的键返回随机索引。如何修改下面的代码以返回第一次出现?这是人们做的事情吗?

//ripped from the JDK
public static int binarySearchValue(InvertedContainer.InvertedIndex[] a, long key) {
return bSearchVal(a, 0, a.length, key);
}

private static int bSearchVal(InvertedContainer.InvertedIndex[] a, int fromIndex,
int toIndex, long key) {
int low = fromIndex;
int high = toIndex - 1;

while (low <= high) {
int mid = (low + high) >>> 1;
long midVal = a[mid].val;

if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return (low); // key not found. return insertion point
}

最佳答案

Jon Skeets 帖子的补充:

潜在更快的实现实际上并不难实现,只添加了 2 行代码,这是我的做法:

    if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else if (low != mid) //Equal but range is not fully scanned
high = mid; //Set upper bound to current number and rescan
else //Equal and full range is scanned
return mid;

关于java - 二分查找中的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com