用master公式来求递归的时间复杂度

来自于左神的讲解:  

master公式: T(N)=a*T(N/b)+)(N^d)

a为发生的次数,T(time)

N是原始样本量

n/b  是子过程的样本量
O(n^d)  除了调子过程外,剩下的开销

log(b,a)>d   -->  复杂度为 O(N^log(b,a));
log(b,a)=d   -->  复杂度为 O(N^d * logN);
log(b,a)  复杂度为 O(N^d);

举例

归并排序  

a发生的次数为2,分别是左边和右边, n/b为n/2, 所以b=2 因为每次的样本量是总样本的一半,除了掉子过程外,在并的过程中,时间复杂度为o(n) 所以d=1;

a=2,b=2,d=1    

所以log(b,a)==d;    时间复杂度为 O(n^1*logN) ---->  O(nlogN);

快速排序和归并排序是一样的计算方式 也是O(nlogN);

你可能感兴趣的:(数据结构)