c++ - 在 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;
}
解决方案
答案很简单:
替换while (low < high)
为while (low <= high)
。这个对我有用。干杯!
我想归功于Stack Overflow 的这个线程。它帮助我了解代码中的问题所在。
推荐阅读
- css - 在 SVG 上的多个复杂路径上垂直居中和水平居中一些数字
- java - 如何通过中间层调用Java中的方法?
- docker - 审计通过 kubectl exec 执行的 Shell 命令
- android - Firebase Firestore 未写入任何值
- javascript - 声明后向 JSX.Element 添加属性
- javascript - 将变量传递给打包 json 脚本
- angular - Angular - 使用“标题”作为@Input
- html - 在 DTL django 的查询集中检查是否存在
- node.js - 使用 Livestream 选项创建仪表板
- android - ConstraintLayout 内的对齐/换行