Java 二进制搜索-获取信息时遇到问题
我有个问题。我正在学习二进制数组,并试图找出它。 我正在尝试这样做,用户将输入他们的书号,这将通过数组reflist搜索它,然后通过booklist打印它 问题是,当我输入一个大于1的数字时,比较值永远不会达到0Java 二进制搜索-获取信息时遇到问题,java,search,binary-search,Java,Search,Binary Search,我有个问题。我正在学习二进制数组,并试图找出它。 我正在尝试这样做,用户将输入他们的书号,这将通过数组reflist搜索它,然后通过booklist打印它 问题是,当我输入一个大于1的数字时,比较值永远不会达到0 public Boolean binarySearch(String [] A, int left, int right, String V){ int middle; numOfSearches ++; if (left > right)
public Boolean binarySearch(String [] A, int left, int right, String V){
int middle;
numOfSearches ++;
if (left > right) {
return false;
}
middle = (left + right)/2;
int compare = V.compareTo(A[middle]);
System.out.println("Middle value: "+middle);
if (compare == 0) {
binaryOutput.setText("The book is: "+bookList[middle]);
}
if (compare < 0) {
return binarySearch(A, left, (middle-1), V);
} else {
return binarySearch(A, middle + 1, right, V);
}
}
public Boolean二进制搜索(字符串[]A,int left,int right,字符串V){
中间;
NUMOF++;
如果(左>右){
返回false;
}
中间=(左+右)/2;
int compare=V.compareTo(A[中间]);
System.out.println(“中间值:+Middle”);
如果(比较==0){
setText(“书是:“+bookList[middle]);
}
如果(比较<0){
返回二进制搜索(A,左,(中-1),V);
}否则{
返回二进制搜索(A,中间+1,右,V);
}
}
只是忘记了返回true
if (left > right) {
return false;
}
middle = (left + right)/2;
int compare = V.compareTo(A[middle]);
System.out.println("Middle value: "+middle);
if (compare == 0) {
binaryOutput.setText("The book is: "+bookList[middle]);
return true; // Missing!
}
if (compare < 0) {
return binarySearch(A, left, (middle-1), V);
} else {
return binarySearch(A, middle + 1, right, V);
}
if(左>右){
返回false;
}
中间=(左+右)/2;
int compare=V.compareTo(A[中间]);
System.out.println(“中间值:+Middle”);
如果(比较==0){
setText(“书是:“+bookList[middle]);
返回true;//缺少!
}
如果(比较<0){
返回二进制搜索(A,左,(中-1),V);
}否则{
返回二进制搜索(A,中间+1,右,V);
}
另外,
compareTo
可能实现不正确。我猜也是这样
Collections.binarySearch()
?如果没有失败的测试用例,您如何调试它?