查看完整版本: 二分搜索(常用算法)

songzi 2008-5-1 22:37

二分搜索(常用算法)

二分搜索
如果要从一个队列a中找到一个元素j,一般我们可能会将j与a中的每一个元素进行比较,直到找到相同的为止,如果找不到就说明,a中没有该元素。
但是当a中有很多元素的时候,使用这种方法效率就会比较低。
如果队列a是有序的,比如从小到大排列。那么用二分搜索就能提高搜索效率
原理是将j先于a中间的一个元素a[mid]比较,如果j>a[mid]那么就可以放弃j与a[mid]之前的元素的比较,相反要是j<a[mid]那么就可以放弃j与a[mid]之后的元素的比较,这样一直找下去,直到a等于a[mid]为止,通过这样搜索,每次可以排除调一半的元素,这样效率就大大提高了。

先看下效果:代码:
function binarySearch(ary:Array, n:Number) :Number
{
        var low                :Number = 0;
        var heigh        :Number = ary.length-1;
        while(low<=heigh)
        {
                var mid:Number = Math.floor((low+heigh)/2);
                if(ary[mid]==n) return mid;
                else if(ary[mid]<n) low = mid+1;
                else if(ary[mid]>n) heigh = mid-1;
        }
        return -1;
}
本文摘自:玫瑰恋([url=http://www.xkde.com]http://www.xkde.com[/url]) 详细出处参考:[url=http://www.xkde.com/ContentShow-76-2854.aspx]http://www.xkde.com/ContentShow-76-2854.aspx[/url]

枫晓梦 2008-5-2 17:36

谢谢

大道至简 2008-5-2 23:13

90%的计算机专家不能在2小时内写出完全正确的二分搜索算法
页: [1]
查看完整版本: 二分搜索(常用算法)