java中的二进制搜索代码将无法运行

时间:2016-09-06 13:11:09

标签: java loops compiler-errors binary-search

我对编码很新,所以没有仇恨。我试图编写二进制搜索代码,但由于某种原因我的代码不起作用。

public class CodeSkillsCheck {

/**
 * @param args the command line arguments
 */


int[] value = {5,10,15,20,25,30,35,40,45,50};
int length;

  public boolean binarySearch(int num)
  {
      int small = 0;
      int big = value.length;

      while(big >= small)
      {
          int mp = (small+big)/2;
          if(value[mp] < num)
          {
              big = mp - 1;
          } else {

              big = mp + 1;
          }
      }

      return false;
  } 


public static void main(String[] args) {

    System.out.println(binarySearch(46));

   }
}

我能做些什么才能让它发挥作用?提前谢谢!

1 个答案:

答案 0 :(得分:2)

二进制搜索的目的是在复杂度 log(n)中查找排序数组内的数字索引。

第一步:初始化

您从排序数组开始:{5,10,15,20,25,30,35,40,45,50}

:是当前最小的索引。在开始时,对于从零开始的数组,它应该为0。

:是目前最大的指数。在开始时它应该是数组的长度。

第二步:循环

虽然大&gt; =小,但你计算mid =(小+大)/ 2。

  • 如果您要查找的值是索引中间的值,则返回true

  • 否则,如果您要查找的值低于index mid的值,那么您希望看到数组的最低部分,因此大于1中。

  • ELSE (代码中缺少这个) small变为mid + 1,因为您现在想要查看数组的最高部分。

如果你走出循环,意味着大小小于小,那么你还没有找到值,你返回错误

FINNALY :您需要在main方法中调用数字的方法binarySearch