時間複雜度與空間複雜度的研究

2021-07-15 22:27:54 字數 883 閱讀 2729

o(

m+n)

比如著名的無回溯的 kmp 字串匹配演算法,

m 表示模式串的長度,

n為目標串的長度,o(

m+n)

表示的是一種前後的邏輯關係(在 o(

m)的基礎上 o(

n)),o(

m)構造 pnext 所用的時間複雜度,o(

n)根據 pnext 表進行實際匹配時所需的時間複雜度。

一段函式,程式的主體部分一般而言都是迴圈,比如 for 迴圈,while 迴圈,而不可能發生在賦值語句,if 條件分支語句(所謂分支的含義為,可執行可不執行);

for 迴圈與 while 迴圈的一大區別在於,for 迴圈的次數一般而言是比較固定的,while 迴圈視內部迴圈變數的具體更新形式,比如是線性的變化 o(

n),還是二叉樹對應的 o(

logn

) ;

hash:也是直接索引的方式;

圖演算法的複雜度(時間和空間)一般都是基於基於圖中頂點數 |v

| 和邊數 |e

| 的度量。

現考慮 圖的遍歷 圖的深度優先遍歷演算法(非遞迴)的複雜度。

由於顯然 |e

|<|v

|2,整個深度優先遍歷下來,圖的鄰接矩陣的時間複雜度為 o(

|v|2

) ,而對於圖的鄰接表,時間複雜度為 o(

max(|e

|,|v

|)) ;

涉及多個變數的時間複雜度,

資料結構(也包括一維二維陣列)即意味著空間複雜度;

基本資料型別的定義,僅占用 o(

1)的空間複雜度,屬於就地演算法

時間複雜度與空間複雜度

空間複雜度 space complexity 是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做s n o f n 比如直接 插入排序 的時間複雜度 是o n 2 空間複雜度是o 1 而一般的 遞迴演算法就要有o n 的空間複雜度了,因為每次遞迴都要儲存返回資訊。乙個演算法的優劣主要從演算法...

時間複雜度與空間複雜度

本文是對時間複雜度以及空間複雜度的乙個理解 時間複雜度 由於環境的不同,同樣的 執行所需要的時間是不同的,所以是不能拿來比較的 而函式中執行的次數確實一樣的 所以時間複雜度就是 程式每個迴圈中的語句總共會執行的次數 時間複雜度的表示方法 大o漸進表示法 o f n 這裡的f n 是什麼呢?void ...

時間複雜度與空間複雜度

本文部分取自搜狗百科 在求演算法效率時,通常有事前分析和事後分析兩種方法,事後分析因為必須實際檢驗過後才能得出答案,且可能由於硬體方面等外部原因影響結果而不被推廣,事前分析的主要就是在考量乙個演算法的基本執行次數,這就是時間複雜度。時間複雜度 一般情況下,演算法中基本操作重複執行的次數是問題規模n的...