java算法——递归类型时间复杂度的计算方法

MASTER=T(N)=a*T(N/b)+O(N^d) T(N)指的是母问题的数据量 每一次的子过程规模是N/b  a指代子问题的调用次数
MaSTER公式 使用条件——等规模的子问题递归
logba <d O(N^d)
logba>d O(N^logab)
logba==d O(N^d *logN)
public class Code_08_Getmax {
    public static  int getmax(int [] arr){
     return process(arr,0,arr.length-1);
    }

    private static int process(int[] arr, int L, int R) {
        if(L==R){
            return arr[L];
        }
        int mid =L+((R-L)>>1);
        int leftmax =process(arr,L,mid);//子问题 规模N/2
        int rightmax=process(arr,mid+1,R);//子问题 规模N/2  且子问题规模是等量的  调用次数是两次, 每一次调用子问题的规模是N/2 。子问题结束后看剩余操作的问题规模,
        // 从此题看有三个步骤一个是return 一个是mid 一个是比较大小 故是O(1)
        return Math.max(leftmax,rightmax);
    }

 

posted on 2022-10-04 19:56  发酸的土豆  阅读(54)  评论(0编辑  收藏  举报