對於遞推類和迴圈類演算法,我們一般統計其主要的基本操作個數與問題的規模大小。從而就可以推出演算法複雜度。
對於任意α!
=1的通式t(
n)=t
(αn)
+t((
1−α)
n)+c
n ,其時間複雜度都是o(
nlog
n)對於正規化t(
n)=a
t(n/
b)+n
d ,對於
a>1,
b>1,
d>
0 ,所以可以得出最後的複雜度為:
對上面分析,當
d>lo
gba 時,那麼ab
d 就小於1,所以1+
abd+
(abd
)2+.
....
..+(
abd)
logb
n 的和極限一定小於某個常數,即t(
n)nd
,所以t(
n)=n
d . 當d
=log
ba時,那麼1+
abd+
(abd
)2+.
....
..+(
abd)
logb
n 等於lo
gbn ,所以這個時候t(
n)=n
logb
alog
n . 當d
gba 時,那麼ab
d 就大於1,所以1+
abd+
(abd
)2+.
....
..+(
abd)
logb
n 的和是乙個隨n的線性增長,即t(
n)ogba
,所以t(
n)=n
logb
a .
雙層遞推
如: a∗t
(n)+
b∗t(
n−1)
+c∗t
(n−2
)=0
對於此類問題的分解:
採用求取特徵值的求法: ax
2+bx
+c=0
這樣轉換的原因在於,呈現上述公式的解一般是指數型解可以化簡,這樣x就相當於指數基數了。這樣就可以最終求出t(
n)的表示式,時間複雜度一目了然。
特殊形式m(
n)=k
1m(n
−1)+
k2 當
k1≠1
時,這樣的表示式一般表示的也是指數級別的複雜度。
演算法複雜度分析
分析非遞迴演算法效率的通用方案 1.決定用哪個 哪些 引數作為輸入規模的度量 2.找出演算法的基本操作 作為一規律,它總是位於演算法的最內層迴圈中 3.檢查基本操作的執行次數是否只依賴輸入規模。如果它還依賴一些其他的特性,則最差效率 平均效率以及最優效率 如果必要 需要分別研究。4.建立乙個演算法基...
演算法複雜度分析
演算法分析的四個漸進表示法 一般,o裡的,取最小的 一般,裡的,取最大的 一般分析時間複雜度,且常考慮最壞複雜度,常用o分析 三法則 法則一 如果t1 n o f n t2 n0 o g n t1 n t2 n max o f n o g n t1 n t2 n o f n o g n 法則二 如果...
演算法複雜度分析
類別name 名字交換類排序 quicksort 快速排序 交換類排序 bubble sort 氣泡排序 選擇類排序 selection sort 選擇排序 選擇類排序 heapsort 堆排序插入類排序 insertion sort 插入排序 插入類排序 shell sort 希爾排序 bucke...