首页 > 代码库 > 小谈二分法 三分法

小谈二分法 三分法

二分法,三分法主要是空间图形的不同,二分法主要解决的是在某个区间之间单调增或减的图形,而三分法主要解决的是凸形,或者凹形的图形,这样的用三分法比较方便些。

二分法模板,

 

整数类型的有以下大致模板:

<span style="font-size:14px;">int low=0,high=n,mid,x,res=-1;while(low<high){  mid=(high+low)/2;  if(num[mid]==x)//其中x是我们想要寻找的元素,num数组单调递增,n表示数组的大小  {   res=mid;break;  }   else if(num[mid]<x)  low=mid+1;  else  high=mid-1;} </span>


 

 查找连续函数的写法:

<span style="font-size:14px;">#define eps 1e-6 double high="区间上限",low="区间下限",mid,res,x; while(high>low+eps)//因为是double类型的数据要考虑到精度的问题,所以不能直接 最起码要大于1e-5 {  mid=(high+low)/2;  res=cal(mid);  if(res<x)  low=mid;  else  high=mid; }</span>


 

 //注意两者中的最大值最小值 都要幅值的,否则程序无法正车运行。
 三分法
 mid=(left+right)/2;
 midmid=(mid+right)/2;
 若mid靠近极值点,则right =midmid;
 否则,left=mid;