我对编码很新,所以没有仇恨。我试图编写二进制搜索代码,但由于某种原因我的代码不起作用。
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));
}
}
我能做些什么才能让它发挥作用?提前谢谢!
答案 0 :(得分:2)
二进制搜索的目的是在复杂度 log(n)中查找排序数组内的数字索引。
第一步:初始化
您从排序数组开始:{5,10,15,20,25,30,35,40,45,50}
小:是当前最小的索引。在开始时,对于从零开始的数组,它应该为0。
大:是目前最大的指数。在开始时它应该是数组的长度。
第二步:循环
虽然大&gt; =小,但你计算mid =(小+大)/ 2。
如果您要查找的值是索引中间的值,则返回true 。
否则,如果您要查找的值低于index mid的值,那么您希望看到数组的最低部分,因此大于1中。
如果你走出循环,意味着大小小于小,那么你还没有找到值,你返回错误。
FINNALY :您需要在main方法中调用数字的方法binarySearch