【資料結構】-時間複雜度和空間複雜度

00潤物無聲00發表於2016-11-13

  在閱讀這篇文章之前,建議大家先對 【資料結構】-巨集觀認識進行閱讀,對資料結構有一個巨集觀的瞭解。我們使用時間複雜度和空間複雜度對演算法進行分析。


時間複雜度

  演算法包含的計算量。

  大O表示法,表示時間複雜度,不考慮具體的執行時間,只給出演算法在問題規模n的某個函式。

  時間複雜度常見的階數有常數階(演算法的時間複雜度與輸入規模n無關),對數階,線性階,多項式階,指數階。通常認為,時間複雜度具有指數階的演算法是實際不可計算的,階數低於平方階的演算法是高效率的。


  一個演算法對具有相同輸入資料量的不同輸入資料,時間複雜度可能會不同,使用最壞時間複雜度和平均時間複雜度來度量演算法的效能。


  最壞時間複雜度:對相同輸入資料量的不同輸入資料,演算法時間用量的最大值。

  平均時間複雜度:對所有相同輸入資料量的各種不同輸入資料,演算法時間用量的平均值。


空間複雜度

  空間複雜度是一個演算法在執行過程中臨時佔用儲存空間大小的度量。

  一個演算法在執行期間所需要的儲存空間量包括三個部分:

    程式程式碼所佔用的空間

    輸入資料所佔用的空間

    輔助變數所佔用的空間


  輸入資料所佔空間由問題決定,不隨演算法的不同而改變。

  程式程式碼所佔空間對不同的演算法也不會有數量級的差別。

  輔助變數所佔空間由演算法決定,有的佔用隨問題規模n增大而增大的臨時空間,有的不隨問題的規模改變。


  在估算演算法空間複雜度時,只需要分析輔助變數所佔用的空間。


總結

  掌握時間複雜度和空間複雜度的分析重點。時間複雜度分析演算法的計算量,而空間複雜度分析演算法執行時佔用的儲存空間,主要是對輔助變數的分析。從這兩個不同的角度對演算法進行分析,設計高效率演算法。


相關文章