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

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

递归方法

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(keyArray[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(keyArray[mid])  
            low=mid+1;  
    }  
    return -1;  
} 

你可能感兴趣的:(二分查找(递归与非递归))