数据结构——二分查找【转】

转自: http://www.lishiyu.cn/post/45.html

二分法(折半查找) -----------效率高,但要求序列必须有序-->使用范围小了

15/2取7不是8
点击查看原图

/*
*       二分查找算法 ---   递归算法
*
*/
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 sizeArray, int key)
{
    int low=0;
    int high= sizeArray-1;
    int mid;
    while(low<=high)
    {
        mid =(low + high)/2;
        if(key == array[mid])
            return mid;
        else if(key < array[mid])
            high = mid - 1;
        else if(key > array[mid])
            low = mid + 1;
    }
    return -1;
}

 

posted @ 2015-12-05 20:40  蚂蚁啃大树  阅读(205)  评论(0编辑  收藏  举报