Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的二进制搜索代码不会运行_Java_Loops_Compiler Errors_Binary Search - Fatal编程技术网

java中的二进制搜索代码不会运行

java中的二进制搜索代码不会运行,java,loops,compiler-errors,binary-search,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 =

我对编码很陌生,所以没有仇恨。我试图编码一个二进制搜索,然而,由于某种原因,我的代码无法工作

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));

   }
}

我能做些什么使它工作?提前谢谢你

二进制搜索的目的是在复杂度logn中查找排序数组中的数字索引

第一步:初始化

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

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

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

第二步:循环

当big>=small时,计算mid=small+big/2

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

否则,如果要查找的值低于索引mid处的值,则需要查找数组的最低部分,因此“大”变为“中1”

否则,您的代码中就会缺少这个值,因为您现在希望查看数组的最高部分。 如果您退出循环,意味着大的比小的小,那么您还没有找到值,您返回false


最后:您需要在主方法中调用一个数字的binarySearch方法

对于二进制搜索,您的数组应该被分类哪些不起作用?您使用了标记编译器错误,得到了什么错误?我得到了以下错误:“线程main java.lang.RuntimeException中的异常:不可编译的源代码-表达式的非法启动”@QBruteWell,您在main中定义了一个方法。这不起作用,它必须在它之外。对,所以错误信息应该在你的问题中。下一步,不要尝试运行不可编译的代码-不应该出现异常。我更新了我的代码,这就是你的意思吗?如果找到值,几乎需要返回true。