Я уже несколько часов борюсь с этим. Я не знаю, что я делаю неправильно. Он проверяет отсортированный по пузырьку массив для введенного пользователем числа. Я установил для печати номера, чтобы я мог ввести число, которое, я уверен, находится в массиве, но когда я помещаю число, которое я вижу, оно почти всегда возвращает false. Иногда это правда, но обычно ложно. Я не уверен, что я делаю неправильно. У меня есть набор для печати таких чисел: number-index-Двоичный поиск C++
Спасибо вам большое за вашу помощь.
int main()
{
int randomArray[20];
int searchValue;
//Irrelevant code snippet: Functioning code fills an array with random numbers between 0-60 and
//bubble sorts them. User inputs searchValue.
if(binarySearch(randomArray, searchValue, randomArray[0], randomArray[19]))
{
cout<<"The number you've searched for is in the array.";
}
else
{
cout<<"The number you've searched for is currently not in the array.\n";
}
return 0;
}
bool binarySearch(int arr[], int searchValue, int low, int high)
{
while(low<=high)
{
int middle = (low+high)/2;
if(arr[middle] == searchValue)
return true;
else if (arr[middle] > searchValue)
high = middle - 1;
else
low = middle + 1;
}
return false;
}
Пожалуйста размещаете что-то * читаемым/компилируется * .... –
У вас есть пример массива, который вы дали ему, где она вернула неправильный результат? Вы распечатали значения, которые он посещает в списке, чтобы узнать, выполняет ли он то, что вы ожидаете? Что вы пытались сделать, чтобы отладить это? –
У меня было это, предварительно распечатав содержимое массива. Мне никогда не приходило в голову распечатывать его, когда работала функция. Я буду учитывать эту идею в следующий раз при отладке. Кто-то ниже зафиксировал мой вызов функции. Спасибо! – VDSturacov