1. 程式人生 > >時間復雜度與空間復雜度

時間復雜度與空間復雜度

和平 變化 大小 關系 常數 工作 post 空間 div

時間復雜度:

  1,時間頻度(Tn):不能計算需上機測試,一個算法中語句執行次數稱為語句頻度或時間頻度。一個算法花費時間與算法中語句執行次數成正比。

  2,時間復雜度0((fn)):當問題規模(n)不斷變化,時間頻度T(n)也不斷變化.而時間復雜度是描述他們之間關系的函數.

  3, 常見的復雜度:常數階0(1),對數階(log2^n),線性階0(n),線性對數階0(nlog2^n),平方階0(n^2),立方階0(n^3),K次方階0(n^k),指數階0(2^n).隨著問題規模的不斷增大,算法執行效率越低.

  4,最壞的時間復雜度和平均時間復雜度:

    1,最壞情況下的時間復雜度稱為最壞的時間復雜度.(討論的時間復雜度均是最壞的情況下的時間復雜度,原因是最壞的情況下的時間復雜度是算法在任何輸入實例上運行時間的上界,保證算法運行時間不會比任何更長,在最壞情況下時間復雜度T(n)=0(n)表示任何輸入實例,算法運行時間不可能大於0(n));

    2,平均時間復雜度:指的是所有可能輸入實例均以等概率出現下的算法運行時間

空間復雜度   

  1,一個程序的空間復雜度指運行完一個程序所需內存大小,一個程序執行除了需要存儲空間與存儲本身所使用本身所使用,常數,變量和輸入數據外,還需要一些對數據進行操作工作單元和存儲一些為現實計算所需信息;

  輔助空間

  1,固定部分:與輸入/輸出數據的個數多少,數值無關,主要包含指令空間(代碼空間),數據空間(常量,簡單變量等)所占的空間,這部分是靜態空間,

  2,可變空間:這部分空間主要包括動態分配空間,以及遞歸棧所需空間,一個算法所需空間用f(n)表示,S(n)-0(f(n)).n是問題規模,S(n)表空間復雜度;

時間復雜度與空間復雜度