ACM周训练总结(九)
本周正好赶上五一假期,加上家里出了点事情,导致本周的学习并没有正常地进行,我深感惭愧~
本周继续学习了二分查找算法相关题目的解法,以及进行了三分查找算法的讲解。
二分查找算法
三分法
题目特征:当需要求某凸性或凹形函数的极值,通过函数本身表达式并不容易求解时,就可以用三分法不断逼近求解。
解题方法:
类似二分的定义Left和Right
mid = (Left + Right) / 2
midmid = (mid + Right) / 2;
如果mid靠近极值点,则Right = midmid;
否则(即midmid靠近极值点),则Left = mid;
代码实现
double mid, midmid,left,right;
mid = (left+right) / 2;
midmid = (mid + Right) / 2;
double cmid = cal(mid);
double cmidmid = cal(midmid);
if ( cmid > cmidmid )
right = midmid;
else
left = mid;
double cal(double x)//函数极点
{
returnD* (h - x) / (H - x) + x;
f(x);//这里放要求的函数;
}
以上即为本周所学内容。