gpt4 book ai didi

binary-search - 在二分搜索中混淆何时使用 left < right ;左 <= 右 ;还有更多

转载 作者:行者123 更新时间:2023-12-04 11:12:42 25 4
gpt4 key购买 nike

我很难理解何时使用:

while (left < right ) {
}

vs 何时使用:
while (left <= right ) {
}

此外,在设置左右边界时,有时我们会使用:
left = mid 

有时我们使用
left = mid + 1;

相似地
right = mid; vs
right = mid - 1;

我在二分搜索知识中是否缺少任何基础知识?

最佳答案

基本思想是搜索和查找元素:

public static int indexOf(int[] array, int target) {
int lo = 0, hi = a.length - 1;
while (lo <= hi) {
// Key is in a[lo..hi] or may be it is not present.
int mid = lo + (hi - lo) / 2;
if (target < a[mid]) hi = mid - 1;
else if (target > a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}

我们也可以使用 mid = (lo + hi) >>> 1计算中值,但使用 (lo+hi)/2可能会导致溢出。现在混淆部分:

We use while (lo <= hi) if we are returning the match from inside the loop. We use while (lo < hi) when we want to exit the loop first and then use the result of lo or hi to return the match.

关于binary-search - 在二分搜索中混淆何时使用 left < right ;左 <= 右 ;还有更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194118/

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