美文网首页
折半查找

折半查找

作者: DinDin1995 | 来源:发表于2019-10-06 11:59 被阅读0次

    要求:序列有序

    实现:采用递归和非递归两种办法都能实现。

    非递归:

    int bin_search(int key[],int n,int k){
        int low = 0, high = n-1, mid;
        while(low<high){
            mid = high-(high-low)/2;
            if(key[mid]==k){
                return mid;  // 查找成功,返回mid
            }else if(k>key[mid]){
                low = mid+1;  // 在后半序列中查找
            }else{
                high = mid-1;  // 在前半序列中查找
            }
        }
    }
    

    递归:

    int bin_search(int key[], int low,int high, int k){
        int mid;
        if(low>high){
            return -1;
        }else{
            mid = high-(high-low)/2;
            if(key[mid]==k){
                return mid;
            }else if(k>key[mid]){
                return bin_search(key,mid+1,high,k);
            }else{
                return bin_search(key,low,mid-1,k);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:折半查找

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