什么时候用三分
众所周知,二分搜索是对于有序数列。而三分则是运用于单峰函数。
代码
while (l + eps <= r) //eps 只在有小数的情况下使用,因为double精度有限
{
mid1 = l + 1.0 * (r - l) / 3;
mid2 = r - 1.0 * (r - l) / 3;
if (f(mid1) < f(mid2)) r = mid2;
else if (f(mid1) > f(mid2)) l = mid1;
else
{
l = mid1;
r = mid2;
}
}
例题
「一本通 1.2 例 3」曲线
「一本通 1.2 例 3」曲线 题解
「一本通 1.2 练习 3」灯泡
「一本通 1.2 练习 3」灯泡 题解