java - 对于数组中的键进行二分查找,lo 或 hi 的最终值是多少?

标签 java arrays search rank

假设整数键具有排序的键数组:int[]keys = {10,20,30,40,50,60,70};所以最初处于排名lo = 0hi = 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/

相关文章:

java - 如何在 JVM 上解析时区字符串 "Pacific Time (US & Canada)"?

arrays - VBA (Excel) 初始化整个数组而不循环

时间:2019-03-17 标签:c++: Help correcting endless loop while modifying c-string array

search - 调solr短语查询搜索

java - Jboss过滤器无法捕获所有客户端的HTTP请求

java - RecyclerView onClick

java - 考虑在您的配置中定义一个类型为 'com.repository.UserRepository' 的 bean

android - 第二次报错java.lang.ArrayIndexOutOfBoundsException.....Android

c++ - 应用程序首先崩溃 strcat_s

python - 覆盖 Haystack 中的用户查询