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