时间复杂度计算方法
1.形如 T(n) = a * T(n/b) + f(n) 的时间复杂度计算方法
有一种方法叫做主方法(Master method)是用来专门计算这种形式的时间复杂度的,方法具体如下:
下边举例进行说明:
例1:
T(n) = 25*T(n/5) + n^2
因为:a=25,b=5,d=2,f(n) = n^2
所以此例符合Master method 中的第二种情况,所以 直接就可以得到:T(n) = n^2 * logn
2.形如 T(n) = a * T(n-1) + f(n) 的时间复杂度计算方法
这种形式的复杂度计算,只能用递推的方式
例1:
T(n)=T(n-1)+n (1)
T(n-1)=T(n-2)+n-1 (2)
T(n-2)=T(n-3)+n-2 (3)
T(n-3)=T(n-4)+n-3 (4)
……
T(3)=T(2)+3 (n-2)
T(2)=T(1)+2 (n-1)
T(1)=T(0)+1 (n)
将(n)式带回(n-1) 式,将(n-1)式带回(n-2) 式,将式子依次带回,最后带回(4) 式,(3) 式,(2) 式,(1) 式。带入式子结果如下:
T(n)=T(0)+1+2+3+……+n-3+n-2+n-1+n
计算结果如下:
T(n)=1+1+2+3+……+n-3+n-2+n-1+n
T(n)=1+(1+n)*n/2
故算法的时间复杂度为
O(n2)