Я реализовал итеративный алгоритм двоичного поиска, который возвращает индекс найденного элемента (-1, если элемент отсутствует в массиве):
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
Когда я пытаюсь проверить его наэлемент, которого нет в массиве, возвращает правильный ответ, когда я попробовал его с массивом: {1,5,23,111}
, а целью является число 5, он вернул правильный результат, который в данном случае равен 1, однако когда я попытался с этимтот же массив, но число 111 вернуло -1, я также пытался использовать разные массивы и несколько целевых чисел, и много раз он возвращал -1, хотя число присутствует в массиве, есть какая-нибудь помощь в том, почему это происходит?