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
,并false
如果search
没有找到。
但是我无法从ArrayList
检索信息。Java的ArrayList的二进制搜索(ArrayList的)
这里有两个错误。
一个在
search == students.getTotal(i)
另一个在
students.compareTo(students.get(mid))
对于第一个我应该访问students
和比较i
搜索,但我无法在students
检索数据。
在第二个我应该得到如果搜索继续在左或右侧。
任何人都可以给我任何提示如何解决这个问题?我可能知道我使用错误的方式获取数据,但我需要一个指导。
1)ArrayList没有getTotal方法 – Darshan
我有一个getTotal在我的学生类中不能调用它吗? – POH
[Java BinarySearch]的可能重复(http://stackoverflow.com/questions/12517764/java-binarysearch) –