整数集合上的二分
求均值的时候,不能/2
,而是要>>1
,这是因为/2
向0取整,>>1
向下取整,/2
在二分值域包含负数的时候无法正常工作。
正确写出二分的流程是:
- 通过分析具体问题,确定左右半段哪一个是可行区间,以及
mid
归属哪一半段。 - 根据分析结果,选择
r=mid,l=mid+1,mid=(l+r)>>1
和l=mid,r=mid-1,mid=(l+r+1)>>1
的两个配套形式之一,保证每次的区间都能够缩小。 - 二分终止条件是
l==r
,该值就是答案所在位置。
实数域上的二分
确定精度eps
,若保留k为小数则取eps=1e-(k+2)
。
分支选择r=mid
或l=mid
之一即可。
精度不易确定或表示时,采用固定循环次数的二分方法。
三分法求单峰函数极值
函数必须具有严格单调性,不然三分法不再适用。