Я пишу алгоритм множественного поиска для моего динамического класса массива и с моей попыткой реализации двоичного поиска, но моя программа не будет правильно устанавливать значение моего целого mid
.Двоичный поиск не работает должным образом
Вот код для метода:
public static boolean search(int[] array, int value) {
int first = 0, last = array.length - 1, mid = ((first + last)/array.length);
System.out.println(first + " - " + mid + " - " + last);
while(true) {
System.out.println(first + " - " + mid + " - " + last);
if (value == array[mid]) {return true;}
if (first == last || mid == last || mid == first) {return false;}
if (value > array[mid]) {
first = mid;
mid = (first + last)/(last + 1);
}
if (value < array[mid]) {
last = mid;
mid = (first + last)/(last + 1);
}
System.out.println(first + " - " + mid + " - " + last);
}
}
Я запускал программу с сотнями тестов, однако, значение среднего всегда 0 (выход 0 - 0 - 111725
или 0 - 0 - 127
или 0 - 0 - 15
). Вся помощь очень ценится!
Вы можете оставить [минимальную, но полную программу] (http://stackoverflow.com/help/mcve)? Это не должно быть для вас гораздо больше, но это позволит нам просто скопировать код и запустить его. – sstan
Вы пробовали отлаживать свою программу? Я подозреваю, что вы быстро сможете определить, где проблема. –
@sstan Там вы идете, все, что я добавил, было следствием метода. – oakTree