我遇到了一个小问题,我真的不知道为什么。我正在尝试编程以使用二进制搜索方法搜索用户输入的数字。当搜索数组中间的数字时它运行良好,但是当我尝试搜索任何其他数字时出现错误。这是我的代码。import java.util.Scanner;public class Main { public static void main(String args[]) { //declaring array int array[] = {12,23,34,45,56,67,78,89}; //declaring variables int search = 0; Scanner input = new Scanner(System.in); System.out.print("\n Enter: "); search = input.nextInt(); binarySearch(array, search); }//end of main static public void binarySearch(int[] array, int search) { int begin = 0; int end = array.length-1; int mid = 0; boolean found = false; while(!found) { mid = (begin + end)/2; if(array[mid] == search) { found = true; search = array[mid]; } else if(array[mid] < search) { begin = array[mid+1]; } else if(array[mid] > search) { end = array[mid-1]; } }//end of while loop //if(!found) //return ("BOOHOO your search was not found"); System.out.print("Yippee i found "+ search + " at index " + mid); }}//end of class
1 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
当您没有找到搜索时,您需要重置指向索引的指针begin和end指针,而不是这些索引上的值,即
while(!found)
{
mid = (begin + end)/2;
if(array[mid] == search)
{
found = true;
}
else if(array[mid] < search)
{
begin = mid+1;
}
else if(array[mid] > search)
{
end = mid-1;
}
}//end of while loop
添加回答
举报
0/150
提交
取消