美文网首页leetcode
二分查找(递归与非递归)

二分查找(递归与非递归)

作者: analanxingde | 来源:发表于2018-04-23 17:30 被阅读10次

是否递归实现:在于判断条件后更改阀值继续循环至符合条件,还是对相应的子集重新本函数。

递归方法

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;  
}

非递归方法

int BinSearch(int Array[],int SizeOfArray,int key/*要找的值*/)  
{  
    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;  
} 

相关文章

网友评论

    本文标题:二分查找(递归与非递归)

    本文链接:https://www.haomeiwen.com/subject/vpvllftx.html