为什么key < x[mid]
下面的条件会导致编译器抱怨操作符未定义?
在 C++ 中,仅当类型 T 不支持运算符<
语义时,这将是一个编译时警告。你如何在 Java 中做同样的事情?
package search;
public class BinarySearch<T>
{
public boolean binary_search_iterative (T[] x, T key)
{
int size = x.length;
if ( size == 0 ) { return false; }
int end = size - 1;
int start = 0;
while ( start <= end)
{
int mid = (end + start)/2 ;
if (key < x[mid])
{
end = mid - 1;
}
else if ( key > key[mid])
{
start = mid + 1;
}
else
{
return true;
}
}
return false;
}
}