做用:求解遞歸算法的時間複雜度。html
把遞歸的函數調用過程,逐層分解畫成圖,其實就是一棵樹。算法
以下是根據斐波那契數列的遞推公式畫的圖:數組
如何用遞歸樹求解時間複雜度呢?函數
總時間=全部層數消耗時間的和;cdn
若是每層消耗時間相同,那麼O(n*h)。htm
若是每層消耗時間不一樣,那麼O(h1+h2+...)blog
歸併排序主要有兩步:1.將數據一分爲二 2.合併。分解的時間就是常量了。合併:把兩個數組合並,時間和數據規模n有關,能夠記做n。所以每一層的時間消耗是n,滿二叉樹層數log2n。總的時間複雜度O(n*h) = O(nlogn)練習:排序
每一層的操做就是:求分區點位置,分區。求分區點位置時間n,總的n。O(nh)。遞歸
那麼如今求樹高h也就是有多少層。get
O(nlogn)
F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
層數:最短路徑n、n-二、n-4....1 =n/2 最長路徑n、n-一、n-2....1 =n
每層時間:每組加和時間的總和,加和時間1,組數=2^(h-1)。每層總時間是2^(h-1)。
若是路徑長度n:
若是路徑長度n/2: 指數級的時間複雜度了。