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

Binary search code in java won't run

我对编码很陌生,所以不讨厌。我正在尝试编写二进制搜索代码,但是由于某种原因我的代码不起作用。

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

   }
}

我该怎么做才能让它发挥作用?提前致谢!

二分查找的目的是在复杂度为 log(n).

的排序数组中找到数字的索引

第一步:初始化

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

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

big :是当前最大的索引。一开始应该是数组的长度。


第二步:循环

当 big >= small 时,你计算 mid = (small + big) / 2。

  • 如果您要查找的值是索引 mid 处的值,那么 您 return true.

  • 否则如果你要查找的值小于索引mid处的值,那么你要查找数组的最低部分,所以big变为mid-1。

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

如果你跳出循环,意思是big比small小,那么你还没有找到值,你return false.


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