時間複雜度

2021-08-09 20:18:37 字數 1026 閱讀 5308

單純依靠執行的時間來比較演算法的優劣並不一定是客觀準確的!

如何才能客觀的評判乙個演算法的優劣呢?

假定計算機執行演算法每乙個基本操作的時間是固定的乙個時間單位,那麼有多少個基本操作就代表會花費多少時間單位。對於不同的機器環境而言,單位時間是不同的,但是對於演算法花費多少時間單位在規模數量級上卻是相同的,由此可以忽略機器環境的影響而客觀的反應演算法的時間效率。

時間複雜度:假設存在函式g,使得演算法a處理規模為n的問題示例所用時間為t(n)=o(g(n)),則稱o(g(n))為演算法a的漸近時間複雜度,簡稱時間複雜度,記為t(n)

分析演算法時,存在幾種可能的考慮:

我們主要關注演算法的最壞情況,是最壞時間複雜度

基本操作,即只有常數項,認為其時間複雜度為o(1)

順序結構,時間複雜度按加法進行計算

迴圈結構,時間複雜度按乘法進行計算

分支結構,時間複雜度取最大值

判斷乙個演算法的效率時,往往只需要關注運算元量的最高次項,其它次要項和常數項可以忽略

在沒有特殊說明時,我們所分析的演算法的時間複雜度都是指最壞時間複雜度

執行次數函式舉例

階非正式術語

12o(1)

常數階2n+3

o(n)

線性階3n2+2n+1

o(n2)

平方階5log2n+20

o(logn)

對數階2n+3nlog2n+19

o(nlogn)

nlogn階

6n3+2n2+3n+4

o(n3)

立方階2n

(2n)

指數階

經常將log2n(以2為底的對數)簡寫成logn

所消耗的時間從小到大

o(1) < o(logn) < o(n) < o(nlogn) < o(n2) < o(n3) < o(2n) < o(n!) < o(nn)

dfs時間複雜度 時間複雜度 空間複雜度

時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...

時間複雜度 空間複雜度

時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...

時間複雜度 空間複雜度

演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...