У меня проблема с бинарным поиском.Двоичный поиск в Java с использованием массива поля имени объекта
Он работает в первый раз, но если пользователь выбирает эту опцию из меню, она не работает для курорта не в массиве, а иногда и не работает вообще. Я не могу понять, почему он не работает. Я читал разные темы здесь, чтобы попытаться понять это, но я в тупике.
EDIT: Я думаю, что у меня это работает. я вынул всю часть кода и переписал его на той лишь разницей, глядя на конечный результат является скобки в случае, если другое заявление
if (resorts[middle].getName().compareTo(getDataFor) > 0)
{
high = middle - 1;
}
else if (resorts[middle].getName().compareTo(getDataFor) < 0)
{
low = middle + 1;
}
else
{
resorts[middle].display();
found = true;
}
Спасибо за помощь!
else if (choice == '2')
{
found = false;
while (!found)
{
System.out.print("Which resort would you like data for?: ");
getDataFor = kb.nextLine().toUpperCase();
low = 0;
high = resorts.length;
while (low <= high && !found)
{
middle = (high + low)/2;
if (resorts[middle].getName().compareTo(getDataFor) > 0)
high = middle - 1;
else if (resorts[middle].getName().compareTo(getDataFor) < 0)
low = middle + 1;
else
{
resorts[middle].display();
found = true;
}
}
if (!found)
System.out.println("Resort not found, please try again.");
}
}
Вы уверены, что массив отсортирован перед использованием двоичного поиска? –
Что значит «не работает»? Какое поведение вы видите? –
массив отсортирован. не работает, либо говорит, что не может найти курорт, когда он находится в массиве, или я вхожу в курорт, который я ищу, и нажимаю кнопку ввода, но оттуда ничего не происходит и говорит, что программа все еще работает – user2817309