- 10
- 0
- 约4.83千字
- 约 5页
- 2016-12-06 发布于北京
- 举报
(算法设计与分析分治算法基本思想
算法基本思想
程序4-1-1折半搜索
templateclass T
int BinarySearch(T a[], const T x, int n)
{//在数组a[0:n-1]中搜索x,数组中的元素满足a[0]=a[1]= … =a[n-1]。
//如果找到x,则返回所在位置(数组元素的下标),否则返回 –1
int left=0; int right=n-1;
while(left=right){
int middle=(left+right)/2;
if(x==a[middle]) return middle;
if(xa[middle]) left=middle+1;
else right=middle – 1;
}
return –1; //未找到x
}
while 的每次循环(最后一次除外)都将以减半的比例缩小搜索范围,所以,该循环在最坏的情况下需要执行次。由于每次循环需耗时,因此在最坏情况下,总的时间复杂性为。
折半搜索算法贯彻一个思想,即分治法。当人们要解决一个输入规模,比如n,很大的问题时,往往会想到将该问题分解。比如将这n个输入分成k个不同的子集。如果能得到k个不同的可独立求解的子问题,而且在求出这些子问题的解之后,还可以找到适当的方法把它们的解合并成整个问题的解,那么复杂的难以解决的
原创力文档

文档评论(0)