在二分搜索中,我们有两个比较,一个用于大于,另一个用于小于,否则是中间值.您将如何优化以便我们只需要检查一次?
bool binSearch(int array[], int key, int left, int right)
{
mid = left + (right-left)/2;
if (key < array[mid])
return binSearch(array, key, left, mid-1);
else if (key > array[mid])
return binSearch(array, key, mid+1, right);
else if (key == array[mid])
return TRUE; // Found
return FALSE; // Not Found
}
Run Code Online (Sandbox Code Playgroud) 我在一篇论文中看到了一句话:"将分支转换为数据依赖关系以避免错误预测的分支".(第6页)
我想知道如何将代码从分支更改为数据依赖项.
这是一篇论文:http://www.adms-conf.org/p1-SCHLEGEL.pdf
更新:如何在二进制搜索中转换分支?