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。