二分法,三分法主要是空间图形的不同,二分法主要解决的是在某个区间之间单调增或减的图形,而三分法主要解决的是凸形,或者凹形的图形,这样的用三分法比较方便些。
二分法模板,
整数类型的有以下大致模板:
<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;
小谈二分法 三分法
时间: 2024-12-30 03:26:39