使用二进制搜索查找密钥

时间:2015-11-14 19:03:49

标签: java

我试图编写一个程序,使用二进制搜索在随机生成的数字中找到数组中的键。 当密钥为0或非常高的数字时,我无法让程序找到密钥。这是一个家庭作业,但是,我已经撞墙了,无法弄明白。感谢您的帮助。

Zombie

1 个答案:

答案 0 :(得分:0)

需要在程序中添加两项更正。

  1. int low = 1;此处应该从0开始。所以,请int low = 0;
  2. 设置low变量没有条件,只有在二进制搜索算法中更改搜索方向/部分时才必须执行,因此添加以下代码

    else if(key > list[mid]) {
        low = mid + 1;
    }
    
  3. mid计算后添加一项检查,以确保mid指向有效的数组索引,例如

    mid = (low + high)/2;
    if(mid < 0 || mid >= list.length) {
        break;
    }
    
  4. 最后,正如您所说的问题评论部分,列表是一系列随机数。 这不是二进制搜索算法的有效输入。输入必须是排序顺序,请阅读此二进制搜索算法document