-1
我有我的二进制搜索功能的问题。基本上只是想检查向量中是否有零。但它不会返回正确的结果。这里是代码。任何人都可以弄清楚我做错了什么?二进制搜索不能使用向量工作
bool RecursiveBinarySearch::binarySearch(std::vector<int> &input, int left, int right)
{
int mid_number;
int odd_even = (right - left)%2;
if(odd_even == 0)
{
mid_number = (right-left)/2;
}
else
{
mid_number = (((right-left)+1)/2)-1;
}
if(right>=left)
{
if(input.at(mid_number)==0)
{
return true; //mid_number
}
else if(input.at(mid_number)>0)
{
return binarySearch(input, left, mid_number-1);
}
else
{
return binarySearch(input, mid_number+1, right);
}
}
else
{
return false; //-1 return
}
}
输入:1 2 3 4 0则它应该返回真实的,但返回0
输入:1 0应返回true,而返回false。
当它不起作用时,请至少张贴实际的测试用例。 – Petr
为什么有人会像这样复杂的二进制搜索算法..你有没有毫无意义地复杂你的算法..现在你很困惑..更好地抓住一本教科书并阅读二进制搜索 – gjha
Aside:所有与'odd_even'的东西doesn'不要做任何事情;两种情况都会导致'(右 - 左)/ 2'。 – Hurkyl