-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