二分初步学习

来源:互联网 发布:淘宝客刚建群话术 编辑:程序博客网 时间:2024/06/06 15:50

二分初步学习

      二分搜索算法是运用分治策略的典型例子。

      给定已经排好序的n个元素a[0:n-1],现在要在这n 个元素中查找一个特定的元素x。

      首先,我们比较容易想到的是顺序搜索法,逐个地比较a[0:n-1]中的元素。但是这个方法没有充分地利用n个元素已排好序这个条件,因此在最坏的情况下,顺序搜索法需要O(n)次比较。

      二分搜索算法充分利用了元素间的次序关系,采用分治策略,可以在最坏的情况下O(logn)的时间完成搜索任务。

      二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取中间元素(a[(n-1)/2])与x作比较,如果x=a[(n-1)/2],则找到x算法终止;如果x<a[(n-1)/2],则只需在数组a的左半部分继续搜索x;如果x>a[(n-1)/2],则只要在数组a的右半部分继续搜索x。

     

 

      二分搜索算法也可以用在方程根的近似求解上。

      一般地,问题可以描述为,求解方程方程f(x)=0。那么具体采用怎样的二分策略来搜索方程的近似解呢?设定一个区间[a,b]满足f(a)*f(b)<0,对于连续函数f(x)来说,一定存在一个根x在区间[a,b]使得f(x)=0成立。不妨假设f(a)<0,f(b)>0,那么二分的思想就很明确了。同样,每次将区间分成两个大致相同的子区间[a,mid]、[mid,b](mid=(a+b)/2.0),如果f(mid)>0,则只需在左半个区间[a,mid]中进行搜索;如果f(mid)<0,相应地我们只需要在问题的右半个区间[mid,b]中进行搜索即可。

                     

              

     

    参考资料:《计算机算法设计与分析》(王晓东著)

原创粉丝点击