Почему мой двоичный поиск возвращает -1, даже если элемент существует?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему мой двоичный поиск возвращает -1, даже если элемент существует?

Сообщение Anonymous »

Я пытаюсь реализовать двоичный поиск в Java, чтобы найти индекс целевого значения в сортированном массиве.

Но даже когда элемент , моя функция возвращает -1 .
code:

:

:

:

:
.

Код: Выделить всё

public int binarySearch(int[] arr, int target) {
int left = 0, right = arr.length;
while (left < right) {
int mid = (left + right) / 2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}

// Test
int[] arr = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(arr, target); // returns -1, but 5 exists at index 2
Что я ожидал: [/b]
Я ожидал, что метод вернуть 2 , потому что 5 присутствует в индексе 2.
, что я получил:
. массив. Что нужно исправить?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ent-exists

Вернуться в «JAVA»