我正在尝试进行二进制搜索。我真的想不出为什么我会陷入无限循环?是因为我忽略了某处的空值吗?值、values[] 和 n 由不同的文件提供,它们是由其他人编写的,就本问题而言,它们是完美编码的。
bool search(int value, int values[], int n)
{
int upper_bound = n - 1;
int lower_bound = 0;
int middle = (upper_bound + lower_bound) / 2;
while (lower_bound <= upper_bound)
{
if (values[middle] == value)
{
return true;
}
else if (values[middle] > value)
{
upper_bound = middle - 1;
}
else if (values[middle] < value)
{
lower_bound = middle + 1;
}
else
{
return false;
}
}
return false;
}
非常感谢大家。