Я создал этот бинарный поиск, но он, кажется, застревает в цикле каждый раз. Все это проверка - это вектор. Я придерживаюсь того, что мне нужно изменить. Я пробовал так много разных вещей.Бинарный поиск застрял бесконечный цикл?
[1,2,4,6], если при поиске 4 никогда не будет найден, он держит удар нижние = середина + 1.
bool SortSearch::binarySearcher(int size, int val)
{
int lower = 0, upper = size - 1, mid;
while (lower < upper)
{
mid = (lower + (upper-lower))/2;
if (students[mid].getID() > val)
upper = mid - 1;
else if (students[mid].getID() < val)
lower = mid + 1;
else if (students[mid].getID() == val)
return true;
else
return false;
}
}
Вы должны использовать отладчик (или операторы печати) для отслеживания потока вашей программы. –
Я использовал отладчик, поэтому я знал, что он зацикливается на месте с этим значением. Это сработало, я не заметил, что у меня был дополнительный(), который стал причиной проблемы. Спасибо, я также добавил тег домашней работы, так как они хотели, чтобы мы сами его реализовали. – LF4