首页 > 解决方案 > 在 C++ 上运行简单的二进制搜索时遇到问题

问题描述

我是编程新手,现在我将在 c++ 上进行二进制搜索。当我第一次学习它时,我运行了一个二进制搜索,它运行良好,但是自从我一直试图自己复制它以来,它一直显示“对不起,我们没有找到你的号码”,当我显示返回值时,它总是返回-1(它在循环中从未改变过)。我将在下面留下代码:

int main(){

int 
numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
searchValue = 8,
returnValue = -1,
low = 0,
high = ARR_SIZE,
mid = (low + high) / 2;

while(low < high)
{
    if(numbers[mid] == searchValue)
    {
        returnValue = mid;
        break;
    }
    else if(numbers[mid] < searchValue)
    {
        low = mid + 1;
    }
    else
    {
        high = mid - 1;
    }
    mid = (low + high) / 2;
}

if(returnValue == -1)
{
    cout << "Sorry we did not find the number" << endl;
}
else
{
    cout << "We found your number! It is located at index " << returnValue << endl;
}

return 0;
}

标签: c++binary-search

解决方案


答案很简单:

替换while (low < high)while (low <= high)。这个对我有用。干杯!

我想归功于Stack Overflow 的这个线程。它帮助我了解代码中的问题所在。


推荐阅读