二分   三分搜索

二分:二分 <wbr> <wbr> <wbr>三分搜索

最经典的就是二分求方程解,以上这个图(原创)R是根处,x1,x2是去的两个边,另x=(x1+x2)/2;f(x)<0;就令x1=x;否则令x2=x;然后重复这个过程直到找到跟,或者达到题目要求的精度;
递归代码:
int binSearch(const int *Array,int start,int end,int key)
{
    int left,right;
    int mid;
    left=start;
    right=end;
    //注释中为递归算法,执行效率低,不推荐
    
 
    while(left<=right)
    {
        mid=(left+right)/2;
        if(key==Array[mid])  return mid;
        else if(key
        else if(key>Array[mid]) left=mid+1;
    }
    return -1;
    //找不到就返回-1
}

三分:
二分 <wbr> <wbr> <wbr>三分搜索

mid (Left Right) 2

midmid (mid Right) 2;

如果mid靠近极值点,则Right midmid

否则(midmid靠近极值点),则Left mid;

 

程序模版如下:

double cal(Type a)
{
    
}

void solve()
{
    double Left, Right;
    double mid, midmid;
    double mid_value, midmid_value;
    Left MIN; Right MAX;
    while (Left EPS <= Right)
    {
        mid (Left Right) 2;
        midmid (mid Right) 2;
        if (cal(mid)>=cal(midmid)) 

            Right midmid;
        else Left mid;
    }
}

原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/5781636.html