Алгоритм бинарного поиска JAVA
Завел массив со значениями: [15 17 21 33 33 33 59 66 77]
Написал функцию, которая принимает массив, размер новой книги и возвращала бы количество больших по размеру.
Вызвал функцию, передав туда массив и размер новой книги, например 33. Должно было получиться 3, получается 4.
Потом проверил 66, тоже получил неверный результат 7.
Прошу помощи!
public class Main {
public static void main(String[] args) {
int[] arr = {15, 17, 21, 33, 33, 33, 59, 66, 77};
int search = 33;
int left = 0;
int right = arr.length - 1;
while (left < right) {
int middle = (left + right) / 2;
if (arr[middle] == search) {
System.out.println(middle);
break;
} else if (arr[middle] > search) {
right = middle - 1;
} else if (arr[middle] < search) {
left = middle + 1;
}
}
}
}