一、非遞歸情況
二、遞歸情況(迭代法)
迭代法的基本步驟是先將遞歸算法簡化爲相應的遞歸方程,然後通過重複迭代,將遞歸方程的右端變換成一個級數,最後求級數的和,再預計和的漸進階。
示例1:
算法的遞歸方程爲:
- T(n) = T(n - 1) + O(1)
請給出該算法的時間複雜度
迭代展開:
T(n) = T(n - 1) + O(1)
= T(n - 2) + O(1) + O(1)
= T(n - 3) + O(1) + O(1) + O(1)
= ......
= O(1) + ... + O(1) + O(1) + O(1)
= n * O(1)
= O(n)
示例2:
算法的遞歸方程爲:
- T(n) = 1,n=1
- T(n) = 2T(n/2)+n,n>1
請給出該算法的時間複雜度
設 n=2^m,則
T(n) = T(2^m)
= 2T(2^(m-1))+2^m
= 2[2T(2^(m-2))+2^(m-1)]+2^m
= .......
= 2^m*T(1)+m*2^m
= (m+1)*2^m
= (log2n+1)*n
= O(nlog2n)