zoukankan      html  css  js  c++  java
  • 二叉树搜索(二分查找法)

    非递归方式:

    // 二分查找法,在有序数组arr中,查找target
    // 如果找到target,返回相应的索引index
    // 如果没有找到target,返回-1
    template<typename T>
    int binarySearch(T arr[], int n, T target){
    
        // 在arr[l...r]之中查找target
        int l = 0, r = n-1;
        while( l <= r ){
    
            //int mid = (l + r)/2;
            int mid = l + (r-l)/2;
            if( arr[mid] == target )
                return mid;
    
            if( arr[mid] > target )
                r = mid - 1;
            else
                l = mid + 1;
        }
    
        return -1;
    }

    递归方式:

    template<typename T>
    int __binarySearch2(T arr[], int l, int r, T target){
    
        if( l > r )
            return -1;
    
        int mid = (l+r)/2;
        if( arr[mid] == target )
            return mid;
        else if( arr[mid] > target )
            return __binarySearch2(arr, 0, mid-1, target);
        else
            return __binarySearch2(arr, mid+1, r, target);
    
    }
    template<typename T>
    int binarySearch2(T arr[], int n, T target){
    
        return __binarySearch2( arr , 0 , n-1, target);
    }

                      

  • 相关阅读:
    django的模板层
    django的视图层
    django的路由层
    web应用与http协议
    索引
    pymysql模块的使用
    多表查询
    单表查询
    数据的增删改
    自定义form组件
  • 原文地址:https://www.cnblogs.com/lzb0803/p/9192969.html
Copyright © 2011-2022 走看看