2014-09-12 5 views
0

Я уже несколько часов борюсь с этим. Я не знаю, что я делаю неправильно. Он проверяет отсортированный по пузырьку массив для введенного пользователем числа. Я установил для печати номера, чтобы я мог ввести число, которое, я уверен, находится в массиве, но когда я помещаю число, которое я вижу, оно почти всегда возвращает 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; 
} 
+0

Пожалуйста размещаете что-то * читаемым/компилируется * .... –

+0

У вас есть пример массива, который вы дали ему, где она вернула неправильный результат? Вы распечатали значения, которые он посещает в списке, чтобы узнать, выполняет ли он то, что вы ожидаете? Что вы пытались сделать, чтобы отладить это? –

+0

У меня было это, предварительно распечатав содержимое массива. Мне никогда не приходило в голову распечатывать его, когда работала функция. Я буду учитывать эту идею в следующий раз при отладке. Кто-то ниже зафиксировал мой вызов функции. Спасибо! – VDSturacov

ответ

1

ваш вызов должен быть как

binarySearch(randomArray, searchValue, 0, 19); 
+0

Это сработало. Не могу поверить, что я пропустил это. Огромное спасибо. – VDSturacov

Смежные вопросы