这个问题在这里已有答案:
我得到了一些代码,其中包含一个Person对象数组,我将编写方法来进行二进制搜索,并覆盖Person类中的compareto方法,以便根据姓氏和名字进行比较 .
public static int binarySearch( Person[] persons, Person key )
{
int low = 0;
int high = persons.length - 1;
return binarySearch(persons, key, low, high);
}
private static int binarySearch( Person[]persons, Person key, int low, int high )
{
if(low > high) //The list has been exhausted without a match.
return -low - 1;
int mid = (low + high) / 2;
if (persons[mid] == key)
return mid;
if(persons[mid] < key) //!!**'The < operator is undefined for the type'
return binarySearch(persons, key, low, mid-1);
else
return binarySearch(persons, key, 0, persons.length -1);
}
我想我的大部分二进制搜索代码都写了 . 但是,我遇到的问题是if(people [mid] <key)我得到错误'<运算符未定义类型' .
我认为它可能需要用我的compareTo方法做一些事情,但我似乎无法解决它
这里是compareTo供参考
public int compareTo( Object o )
{
Person p = (Person) o;
int d = getLastName().compareTo(p.getLastName());
if (d == 0)
d = getFirstName().compareTo(p.getFirstName());
return d;
}
感谢您的帮助!
3 回答
代替
使用
试试这个:
您无法使用
<
>
like运算符比较对象 .您正在比较两个对象引用,它们只保留指向实际人对象位置的位模式 . 对于对象比较,您需要定义要比较它们的属性(属性) . 试试吧
还要检查binarySearch的正确实现 .
你还没有在compareTo中使用 this . 应该是这样的
也是你的人 array sorted ?