最近我在接受采访时被问到这个问题。 在二进制搜索中,我们有两个比较,一个用于大于,另一个用于小于中值。它是否可以通过某种方式进行优化,以便我们只需要检查一次?
答案 0 :(得分:2)
例如:
if (lookup < mid)
searchLower();
else if (lookup > mid)
searchUpper();
else
found(lookup);
如果你改变操作符,那么所涉及的操作符会改变,但你总是需要进行两次比较。
答案 1 :(得分:2)
是的,有几种方式。
进行三方比较,存在于某些版本的Fortran中(参见“算术IF”)。
通过使用措辞 - 在x86(及其他)程序集中,您可以使用一个cmp
,但仍使用两个分支。