Java 二进制搜索方法的循环数

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<

嘿,我想找到一个二进制搜索的比较次数,我用这个方法来计算比较次数。然而,它总是返回-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<=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到<代码>中间=(高+低)/2n){low=middle+1;}if(ran[middle]