假设整数键具有排序的键数组:int[]keys = {10,20,30,40,50,60,70};
所以最初处于排名lo = 0
和 hi = 6
。
对于keys数组中的30进行二分查找,lo的最终值会是20,也就是1吗?
我只需要理解逻辑即可。
最佳答案
二分搜索将像这样开始:
lo = 0, hi = 6, mid = 3, numberInMid = 40
如30 < 40
, hi = mid - 1 = 2
现在,
lo = 0, hi = 2, mid = 1, numberInMid = 20
如30 > 20
, lo = mid + 1 = 2
最后,
lo = 2, hi = 2, mid = 2, numberInMid = 30
如30 == 30
,循环退出并且 ans = 30
相反,如果您正在搜索 35(我采用这个数字,因为它适合上述所有关系表达式),那么:
如35 > 30
, lo = mid + 1 = 3
,
自 lo > hi
,循环退出并返回默认值 ans
。
例如:ans = -1
如果只涉及正整数,或者相反,您甚至可以使用 flag = false
仅当 ==
时才切换为 true表情被击中。
关于java - 对于数组中的键进行二分查找,lo 或 hi 的最终值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557875/