我得到了一些包含 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(persons[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;
}
感谢您的帮助!
最佳答案
而不是
if(persons[mid] < key)
使用
if(persons[mid].compareTo(key) < 0)
关于java - 对象数组的二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19411371/