二分查找的递归、非递归算法

查找成功返回对应的数组下标,失败返回-1

1.递归实现

int _binarySearch(int * array,int begin,int end,int value){
    if(begin > end){
        return -1;
    }
    int index = (begin+end)/2;
    int sig = array[index]-value;
    if(sig == 0){
        return index;
    }
    else if(sig > 0){
        end = index-1;
    }
    else{
        begin = index+1;
    }
    return _binarySearch(array,begin,end,value);
}

2.非递归实现

int binarySearch( int * array, int size, int value){
     int begin = 0 ,end = size;
     int index;
     while (begin <= end){
        index = (begin + end) / 2 ;
         int sig = array[index] - value;
         if (sig == 0 ){
             return index;
        }
         else if (sig > 0 ){
            end = index - 1 ;
        }
         else {
            begin = index + 1 ;
        }
    }
     return - 1 ;
}
原文地址:https://www.cnblogs.com/shadowwalker/p/binarysearch.html