在绑定二进制搜索下?

时间:2015-05-08 02:41:26

标签: algorithm binary-search

如何在常规二进制搜索中设置条件,以便找到最大值x,使得某个临界值t的f(x)<= t?而不是意外地返回最低数字&gt;吨。

现在我的界限是

if f(x) > t then high = x-1
else if f(x)< t then low = x+1
else return x

主要的while循环是while low <= high

1 个答案:

答案 0 :(得分:2)

这个怎么样?

int ans = -1;

bsearch()
  if f(x) > t then high = x-1
  else if f(x)<= t then low = x+1, ans = x

另一种方法:

只需使用当前的bsearch找到x,其中f(x)是最小值&gt; T, 那么你想要的只是x - 1? (如果存在)

PS:如果您使用的是C ++,可以使用upper_bound()查找x的位置,然后x-1就是您的答案