我們將兩個函式的相對增長速度稱為相對增長率,從數學角度上來說其實就是一階導數,看誰的增長速度更快,比如f(x
)=x2
f(x)=x^2
f(x)=x
2的增長速度比g(x
)=
xg(x)=x
g(x)=x
要更快。
在演算法分析中:
基於上面的定義,有幾點推論:
對於不同的程式邏輯都會對應不同增長率,所以不同的演算法在大資料下執行效率千差萬別,對於一般的順序執行或者判斷,他的增長率為o(1
)o(1)
o(1)
,你不管傳入多大的入參,執行起來是無差別的,而對於迴圈語句則意味著o(n
)o(n)
o(n)
,而迴圈中嵌入了k重迴圈,則增長率是o(n
k)
o(n^k)
o(nk
)。而一些折半或者二分演算法他的增長率就是o(l
ogn)
o(logn)
o(logn
)。
演算法分析基礎
1.級數 a.算數級數 等差 1 2 3 4 n o n 2 末項的平方 b.冪數級數 1 a 2 a n a o n a 1 末項的冪數加一次方 c.幾何級數 a 0 a 1 a 2 a n o a n 末項 d.調和級數 1 1 1 2 1 3 1 n o logn log1 log2 log3...
演算法分析基礎
定義 如果存在正常數c與n0,使得當n n0時t n cf n 則記為 t n o f n 如果存在正常數c與n0,使得當n n0時t n cg n 則記為 t n omega g n 當且僅當t n o h n 且t n h n 時,則 t n theta h n 如果t n o p n 且t n...
演算法分析基礎
定義 如果存在正常數c與n0,使得當n n0時t n cf n 則記為 t n o f n 如果存在正常數c與n0,使得當n n0時t n cg n 則記為 t n omega g n 當且僅當t n o h n 且t n h n 時,則 t n theta h n 如果t n o p n 且t n...