二分法是一个非常高效的算法。它常常用于处理单调区间上的极值问题。
简而言之,当你要求出[a,b]区间使得F(x)>K的第一个x时,若 f(x)满足在区间[a,b]
内单调。则可以重复一下步骤直至找到解为止。
1. 选取当前区间中点S,并计算出f(s)
2. 若f(s)>x,则跳到第3步,否则跳到第4步。
3. 将当前区间转变为[s,b],跳到第5步
4. 将当前区间转变为[a,s],跳到第5步
5. 若当前区间已经满足求解要求则退出,否则跳到第1步。
因为每次二分都将原来的区间减少一半,所以时间复杂度是log*判定的时间。