近期学习了二分法和三分法的相关内容,总结如下:
二分法
(1)对于一个序列,先确定待查数据所在的范围,然后逐步缩小范围进行搜素。
常用在单调序列或单调函数中进行二分查找,因此当问题的答案具有单调性,就可以通过二分把求解答案的问题转换成二分查找答案并判定答案的正确性。
注意:对于整数域上的二分,要注意终止边界和左右区间的取舍时的开闭情况,避免漏掉答案或造成死循环。对于实数域上的二分,要注意精度的问题。
(2)步骤:
1、先确定左右半段哪个是可行区间,以及中间位置。
2、将待查找的数据与中间值相比较。若相等,则查找成功并返回该位置;若中间值较小,那么便取中间值与右边的边界的中间值,继续与所需值比较;若中间值较大,那么便取左边的边界与中间值的中间值,再与所需值比较,然后重复此过程,直到找到需要的数据。
三分法
(1)用于单峰函数(有唯一的极值点),来求其极值。通过不断缩小区间的范围,逐步找到极值点的位置。
(2)步骤:区间[L,R]
1、先取区间[L,R]中点值m,再取[m,R]的中间值m'
2、比较取m和m'时的函数值,若f(m)>f(m')时,m'在极值点的右边,否则,m在极值点的左边。从而来缩小下一次三分的范围。