【发布时间】:2017-02-14 14:40:45
【问题描述】:
public static boolean binarySearch(ArrayList<Student> students, int search) {
int first = 0;
int last = students.size() - 1;
int mid;
while (first <= last) {
mid = first + (last - first) / 2;
if (search == students.getTotal(i)) {
return true;
} else if (students.compareTo(students.get(mid)) < 0) {
last = mid - 1;
} else {
first = mid + 1;
}
}
return false;
}
在这种方法中,如果找到search,我应该返回true,如果没有找到search,我应该返回false。
但是我无法从ArrayList 检索信息。
这里有两个错误。
一个在
search == students.getTotal(i)
另一个在
students.compareTo(students.get(mid))
对于第一个我应该访问students 并比较i 进行搜索,但我无法检索students 中的数据。
如果搜索要在左侧或右侧继续,我应该得到第二个。
谁能告诉我如何解决这个问题?我可能知道我使用了错误的方式来获取数据,但我需要一个方向。
【问题讨论】:
-
1) ArrayList 没有 getTotal 方法
-
我的学生班有一个 getTotal 是不是无法调用它?
-
Java BinarySearch的可能重复
-
尝试从学生数组列表中的适当索引处获取学生对象。
标签: java arraylist binary-search