如何在一个降序的数组中进行二进制搜索?

时间:2016-04-24 17:38:48

标签: java binary-search

我的代码不起作用,我希望能够在一个按降序排列的数组中进行二进制搜索。

static int searchDescendingGT( double[] a, int i, int j, double x )
{
  while(i!=j){
    // | >x | unknown | >=x |
        int m = i+(j-i)/2;

        if (a[m]<x){
        j = m; 
        }
        else{
         i = m+1; 
        }
    }
    return i;

}

可能是什么问题,我没看到什么?

1 个答案:

答案 0 :(得分:1)

请尝试foll

假设:a是您的数组,i = startj= endx是您要查找的元素。如果Foll不在-1

,则x将返回a
static int searchDescendingGT(double[] a, int i, int j, double x) {
    while (i <= j) {

        int m = (i + j) / 2;

        if (a[m] == x) {
            return m;
        } else if (a[m] < x) {
            j = m - 1;
        } else {
            i = m + 1;
        }
    }
    return -1;

}