我遇到了一个小问题,我真的不知道为什么。我正在尝试编程以使用二进制搜索方法来搜索用户输入的数字。当搜索数组中间的数字时,它工作得很好,但是当我尝试搜索任何其他数字时遇到错误。这是我的代码。
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
答案 0 :(得分:3)
找不到搜索内容时,需要将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