演算法(algorithm)是特定問題求解步驟的一種描述,它是指令的有限序列,其中的每條指令表示乙個或多個操作。此外,乙個演算法還具有下列5個重要特性:
通常,設計乙個好演算法應考慮達到以後目標:
演算法效率的度量是通過時間複雜度和空間複雜度來描述的。
乙個語句的頻度是指該語句在演算法中被重複執行的次數。演算法中所有語句的頻度之和記為 t(n),它是該演算法問題規模 n 的函式,時間複雜度主要分析 t(n) 的數量級。演算法中基本運算(最深層迴圈內的語句)的頻度與 t(n) 同數量級,因此通常採用演算法中基本運算的頻度 f(n) 來分析演算法的時間複雜度。
因此演算法的時間複雜度記為:
t (n
)=o(
f(n)
)t(n) = o(f(n))
t(n)=o
(f(n
))o 的含義是 t(n) 的數量級,其嚴格的數學意義是:若 t(n) 和 f(n) 是定義在正整數集合上的兩個函式,則存在正常數 c 和 n0,使得 n >= n0 時,都滿足 0 <= t(n) <= c(fn)。
演算法的時間複雜度不僅依賴於問題的規模 n,也取決於待輸入資料的性質(如輸入資料元素的初始狀態)。
一般總是考慮在最壞情況下,演算法的時間複雜度,以保證演算法的執行時間不會比它更長。
在分析乙個程式的時間複雜性時,有以下兩條規則:
常見的漸進時間複雜度為:
o (1
)log2
n)n)
nlog2n)
n2)n3)
2n)2n!)
nn)o(1) < o(log_2n) < o(n) < o(nlog_2n) < o(n^2) < o(n^3) < o(2^n) < o(2n!) < o(n^n)
o(1)
log2n)
n)nlog
2n)n2)
n3)2n)
2n!)
nn)演算法的空間複雜度 s(n) 定義為該演算法所損耗的儲存空間,它是問題規模 n 的函式,記為
s (n
)=o(
g(n)
)s(n) = o(g(n))
s(n)=o
(g(n
))乙個程式在執行時除需要儲存空間來存放本身所用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的工作單元和儲存一些為實現計算所需資訊的輔助空間。若輸入資料所佔空間只取決於問題本身,和演算法無關,則只需分析除輸入和程式之外的額外空間。
演算法原地工作是指演算法所需的輔助空間為常量,即 o(1)。
1 2 演算法和演算法評價
1.演算法是對特定問題求解步驟的一種描述,它是指令的有限序列其中的每條指令表示乙個或多個操作。此外,乙個演算法還具有下列5個重要特性 1 有窮性 乙個演算法必須總在執行有窮步後結束,且每一步都可在有窮時間內完成 2 確定性 演算法中每條指令必須有確切的含義,對於相同的輸入只能得到相同的輸出 3 可行...
演算法和演算法評價
目錄 一 演算法的基本概念 1 五個重要特性 並非用來定義演算法,只是是演算法的必要條件 2 好演算法應達到的目標 二 演算法效率的度量 1 時間複雜度 2 時間複雜度 程式 資料結構 現實問題資訊化 演算法 處理資訊解決實際問題 概念 對特定問題求解的一種描述 有窮性 執行有限步後結束 確定性 相...
資料結構第1章 緒論 1 2 演算法和演算法評價
返回目錄?演算法 algorithm 是對特定問題求解步驟的一種描述,它是指令的有限序列,其中的每條指令表示乙個或多個操作。乙個演算法還具有下列5個重要特徵 通常,乙個好的演算法應該考慮達到以下目標 我們以時間複雜度和空間複雜度來度量演算法的效率。乙個語句的頻度是指該語句在演算法中被重複執行的次數。...