我的代码不起作用,我希望能够在一个按降序排列的数组中进行二进制搜索。
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;
}
可能是什么问题,我没看到什么?
答案 0 :(得分:1)
请尝试foll
。
假设:a
是您的数组,i = start
,j= end
,x
是您要查找的元素。如果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;
}