簡單理解演算法時間複雜度

2021-10-04 06:10:52 字數 968 閱讀 8400

在電腦科學中,演算法的時間複雜度(time complexity)是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。

我們假設計算機執行一行基礎**需要執行一次運算。

int afunc(void)
那麼上面這個方法需要執行 2 次運算

int afunc(int n) 

}

此時時間複雜度為 o(n × 1),即 o(n)。

對於多個迴圈,假設迴圈體的時間複雜度為 o(n),各個迴圈的迴圈次數分別是a, b, c…,則這個迴圈的時間複雜度為 o(n×a×b×c…)。分析的時候應該由里向外分析這些迴圈。

void afunc(int n) 

}}

此時時間複雜度為 o(n × n × 1),即 o(n^2)。

對於順序執行的語句或者演算法,總的時間複雜度等於其中最大的時間複雜度。

void afunc(int n) 

}// 第二部分時間複雜度為 o(n)

for(int j = 0; j < n; j++)

}

此時時間複雜度為 max(o(n^2), o(n)),即 o(n^2)。

對於條件判斷語句,總的時間複雜度等於其中 時間複雜度最大的路徑 的時間複雜度。

void afunc(int n) 

}} else

}}

此時時間複雜度為 max(o(n^2), o(n)),即 o(n^2)。

時間複雜度分析的基本策略是:從內向外分析,從最深層開始分析。如果遇到函式呼叫,要深入函式進行分析。

[參考文章](

理解時間複雜度

本篇概念皆是關於時間複雜度 首先需要了解乙個概念 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為 t n 乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多 n 稱為問題的規模,當 n 不斷變化時,時間頻度 t n 也會不斷變化。但有時我們想知道...

簡單查詢演算法時間複雜度

寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在 t的下標j 如果x不在t中,輸出j 0.按實驗模板編寫,分析 部分僅給出複雜度 結果即可。順序查詢 順序查詢也稱為線形查詢,屬於無序查詢演算法。從資料結構線形表的一端開始,順序掃瞄,依次將掃瞄到的結點關鍵字與給定值k...

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...