Java 二进制搜索方法的循环数
嘿,我想找到一个二进制搜索的比较次数,我用这个方法来计算比较次数。然而,它总是返回-1,因为它没有找到numsearch,尽管数组包含数字。 这是我的方法。。计数指的是比较的次数Java 二进制搜索方法的循环数,java,search,binary-search,Java,Search,Binary Search,嘿,我想找到一个二进制搜索的比较次数,我用这个方法来计算比较次数。然而,它总是返回-1,因为它没有找到numsearch,尽管数组包含数字。 这是我的方法。。计数指的是比较的次数 public static int BinarySearch (int n, Integer[] ran) { int low = 0; int high = ran.length-1; int count = 0; int middle; while (low<
public static int BinarySearch (int n, Integer[] ran) {
int low = 0;
int high = ran.length-1;
int count = 0;
int middle;
while (low<=high) {
count++;
middle = (high - low)/2;
if (ran[middle] == n) {
return count;
}
else if (ran[middle] > n) {
high = middle - 1;
}
else {
low = middle + 1;
}
}
return -1;
}
publicstaticintbinarysearch(intn,Integer[]ran){
int低=0;
int高=ran.length-1;
整数计数=0;
中间;
while(低n){
高=中-1;
}
否则{
低=中+1;
}
}
返回-1;
}
将最后一行从return-1
更改为return count
公共静态int-BinarySearch(int-n,Integer[]ran){
public static int BinarySearch(int n, Integer[] ran) {
int low = 0;
int high = ran.length - 1;
int count = 0;
while (high >= low) {
count++;
int middle = (low + high) / 2;
if (ran[middle] == n) {
return count;
}
if (ran[middle] < n) {
low = middle + 1;
}
if (ran[middle] > n) {
high = middle - 1;
}
}
return count;
}
int低=0;
int high=ran.length-1;
整数计数=0;
而(高>=低){
计数++;
int-middle=(低+高)/2;
如果(运行[中间]==n){
返回计数;
}
if(ran[中间]n){
高=中-1;
}
}
返回计数;
}
我尝试过,但它返回2或继续循环,我必须手动停止。代码本身也不正确。也许您应该检查您的实现。我会改变middle=(高-低)/2代码>到<代码>中间=(高+低)/2谢谢兄弟,我已经更改了密码。但是,它给了我5或4个谢谢兄弟,我想我可以找到一个解决方案,因为排序的数组是按降序排列的,所以我必须改变if(ran[middle]>n){low=middle+1;}if(ran[middle]