演算法的效率可以在執行之前和執行之後的兩個不同階段進行分析。 它們如以 -
先驗分析 - 這是一種演算法的理論分析。通過假定所有其他因素(例如處理器速度)是恆定的並且對實現沒有影響來測量演算法的效率。
後驗分析 - 這是對演算法的經驗分析。 所選擇的演算法使用程式設計語言來實現。 然後在目標計算機上執行。 在此分析中,收集實際的統計資料,如執行時間和所需空間。
假設X
是演算法,n
是輸入資料的大小,演算法X
使用的時間和空間是決定X
的效率的兩個主要因素。
演算法f(n)
的複雜性以演算法n
所需的執行時間和/或儲存空間為輸入資料的大小。
演算法的空間複雜度表示該演算法在其生命週期中所需的儲存空間量。 演算法所需的空間等於以下兩個元件的總和 -
任何演算法P
的空間複雜度S(P)
是S(P)= C + SP(I)
,其中C
是固定部分,S(I)
是演算法的變數部分,取決於範例特徵I
,下面是一個簡單的例子,試圖解釋這個概念 -
Algorithm: SUM(A, B)
Step 1 - START
Step 2 - C ← A + B + 10
Step 3 - Stop
這裡有三個變數A
,B
和C
以及一個常數。 因此S(P)= 1 + 3
。現在,空間取決於給定變數和常數型別的資料型別,並且它將相應地相乘。
演算法的時間複雜度表示演算法執行完成所需的時間量。 時間要求可以定義為一個數值函式T(n)
,其中T(n)
可以測量為步數,如果每步消耗的時間不變。
例如,新增兩個n
位整數需要n
個步驟。 因此,總計算時間是T(n)= c * n
,其中c
是加兩位所用的時間。 在這裡,觀察到T(n)
隨著輸入尺寸的增加而線性增長。