最经典的就是二分求方程解,以上这个图(原创)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
}
三分:
mid
midmid
如果mid靠近极值点,则Right
否则(即midmid靠近极值点),则Left
程序模版如下:
double
{
}
void
{
}