您的位置:首页 > 编程语言 > C语言/C++

二分查找递归和非递归

2015-08-17 21:57 357 查看
递归方法

 

[cpp] view
plaincopyprint?

int BinSearch(int Array[],int low,int high,int key/*要找的值*/)  

{  

    if (low<=high)  

    {  

        int mid = (low+high)/2;  

        if(key == Array[mid])  

            return mid;  

        else if(key<Array[mid])  

            return BinSearch(Array,low,mid-1,key);  

        else if(key>Array[mid])  

            return BinSearch(Array,mid+1,high,key);  

    }  

    else  

        return -1;  

}  

 

非递归方法

 

[cpp] view
plaincopyprint?

int BinSearch(int Array[],int SizeOfArray,int key
d812
/*要找的值*/)  

{  

    int low=0,high=SizeOfArray-1;  

    int mid;  

    while (low<=high)  

    {  

        mid = (low+high)/2;  

        if(key==Array[mid])  

            return mid;  

        if(key<Array[mid])  

            high=mid-1;  

        if(key>Array[mid])  

            low=mid+1;  

    }  

    return -1;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++