Мой двоичный поиск, чтобы увидеть, есть ли целое число в массиве, зацикливается вечно, кто-нибудь знает, почему это может происходить? Кстати, я впервые использую бинарный поиск.
Мой Java код здесь:
import java.util.Scanner;
public class testBeforeLearning {
private int[] array;
private int target;
public testBeforeLearning(int[] array, int target){
this.array = array;
}
private int low;
private int high;
private int mid;
public Boolean actualSearch(){
low = 0;
high = array.length - 1;
while (target != array[mid]){
mid = (low + high)/2;
if (target == array[mid]){
return true;
}
else if(target > array[mid]){
low = mid + 1;
}
else if (target < array[mid]){
high = mid - 1;
}
}
return false;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] dataSet = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("Please input a number you want to search for in the array:\n");
int target = input.nextInt();
testBeforeLearning binarySearch = new testBeforeLearning(dataSet, target);
System.out.println(binarySearch.actualSearch());
}
}
По какой-то причине мои нижняя и верхняя границы не кажется, увеличивается или уменьшается, и я не уверен, почему, у кого-нибудь есть идеи, почему?
Спасибо!