flyfish 2015-7-21
函式的漸近增長:給定兩個函式f(n)和g(n)。假設存在乙個整數n。使得對於全部的n > n,f(n)總是比g(n)大,那麼,我們說f(n)的增長漸近快於g(n)。
演算法時間複雜度定義
在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式。進而分析t(n)隨n的變化情況並確定t(n)的數量級。
演算法的時間複雜度,也就是演算法的時間量度,記作:t(n)=o(f(n))。
它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率同樣。稱作演算法的漸近時間複雜度,簡稱為時間複雜度。
當中f(n)是問題規模n的某個函式。
這樣用大寫o( )來體現演算法時間複雜度的記法,我們稱之為大o記法。 普通情況下,隨著n的增大。t(n)增長最慢的演算法為最優演算法。
推導大o階:
1.用常數1代替執行時間中的全部加法常數。
2.在改動後的執行次數函式中。僅僅保留最高端項。
3.假設最高端項存在且不是1,則去除與這個項相乘的常數。
得到的結果就是大o階。
經常使用的時間複雜度所耗費的時間從小到大依次是
o(1) < o(lo
gn) < o(
n) < o(nl
ogn) < o(n2
) < o(n3
) < o(2n
) < o(n!
) < o(nn
)以上引用自《大話資料結構》
漸近分析
考慮演算法在輸入規模趨向無窮時的效率分析就是漸近分析。
漸近分析就是:忽略詳細機器、程式設計或編譯器的影響,僅僅觀察在輸入尺寸n取趨向無窮時演算法效率的表現.
o、ω、θ表示
o 想象成
⩽ 函式的漸近上界
ω 想象成
⩾ 函式的漸近下界
θ 想象成
= 函式的準確界
以上引用自《演算法之道》
θ(g(n))=
o(g(n))=
ω(g(n))=
o(g(n))=
ω(g(n))=
以上引用自《演算法導論》
ω : omega 美[o』mɛɡə]希臘字母表的最後乙個字
θ: theta 美[『θitə] 希蠟字母的第八字
演算法時間複雜度空間複雜度
演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...
演算法 時間複雜度 空間複雜度
1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...