程帅霞

不断受挫,不停起身,不断追寻,不止AC~~

导航

二分三分

一、概念

在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,重复直到找到目标元素。

时间复杂度:O (logn)

1 double left=“区间下界”,right=“区间上界”,mid;
2 while(right - left > 1.0e-6)
3 {
4      mid = (right + left)/2;
5     if(Caculate(mid)<x)
6         left=mid;
7     else
8         right=mid;
9 }

二、三分法

类似二分的定义left和right

mid = (left + right) / 2

midmid = (mid + right) / 2;

如果mid靠近极值点,则right = midmid;

否则(即midmid靠近极值点),则left = mid;

 

格式:

 1 double mid, midmid;
 2 while ( low + eps < high )
 3 {
 4     mid = (low + high) / 2;
 5     midmid = (mid + high ) / 2;
 6     double cmid = cal(mid);
 7     double cmidmid = cal(midmid);
 8     if ( cmid > cmidmid ) 
 9             high = midmid;
10     else 
11         low = mid;
12 }

 

 

1 while(l+1e-11<r)    
2     {         
3    lmid=l+(r-l)/3;           
4  rmid=r-(r-l)/3;       
5      if(check(lmid)<=check(rmid)) r=rmid;     
6        else l=lmid;   
7       }

 

posted on 2020-11-02 14:21  程帅霞  阅读(167)  评论(0)    收藏  举报