Мне нужно реализовать алгоритм рекурсивного бинарного поиска для целочисленного массива, отсортированного в порядке возрастания (т.е. 1,2,3,4...
).
Массив, который у меня есть, содержит следующие числа:
0 0 0 0 0 0 0 1 2 2 3 3 3 3 5 6 7 7 7 9
Однако моя текущая реализация бинарного поиска находит только числа справа от 3. По какой-то причине она не находит 9, 7, 6 и 5.
ниже мой код:
private int srchHelper(int[] array, int first, int last, int x) {
if (first > last) return - 1;
int mid = (first + last) / 2;
if (array[mid] == x) {
return mid;
}
if (array[mid] < x) {
return srchHelper(array, (mid + 1), last, x);
}
else return srchHelper(array, (mid - 1), last, x);
}