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); }