我目前正在编写一种方法,它比简单的线性搜索更有效地搜索已排序的数组。想法是用户将输入"目标"它们定位的值,数组将根据值向上或向下移动数组,直到中点(中)找到它。但是,当我尝试将中间值与目标进行比较时,如果" target"小于或大于" mid",我一直收到一个糟糕的操作数错误,因为我正在将目标与int进行比较,当我真的想要收集是否值" mid"与目标相比,大于0或小于0.所以" mid"可以决定是否向上或向下移动阵列。关于如何为方法解决这个问题的任何想法? (对不起,如果我让这个混乱,这已经是一个漫长的夜晚)
for (int x=0; x<array.length; x++)
{
int min = 0, mid, max=array.length-1;
do
{
mid = (min + max) / 2;
if(array[mid].compareTo(target < 0))
{
max = mid - 1; //moves down the array
}
else if(array[mid].compareTo(target > 0))
{
min = mid + 1; //moves up the array
}
else
{
return mid;
}
}
while(min<=max);
{
return -1; //after dropping out of the while loop
}
}
}
错误:SearchUtils.java:28:错误:二元运算符的错误操作数类型&#39;&lt;&#39; if(array [mid] .compareTo((target)&lt; 0)) ^ 第一种类型:可比较 第二种类型:int SearchUtils.java:32:错误:二元运算符的错误操作数类型&#39;&gt;&#39; else if(array [mid] .compareTo(target&gt; 0)) ^ 第一种类型:可比较 第二种类型:int 2个错误
答案 0 :(得分:0)
将谓词从函数调用中取出:
if(array[mid].compareTo(target) < 0)