資料結構中時間複雜度和空間複雜度的理解

2021-07-14 18:50:53 字數 1026 閱讀 5093

剛開始學習資料結構,由於感覺計算時間和空間複雜度好多複雜的公司,看的頭都大了,所以就沒有仔細理解大概瀏覽了一遍,誰知後面感覺好多題目都是問時間和空間複雜度的,所以就感覺很迷茫,要重新開始學習這個啦,考試題目一般涉及時間複雜度的比較多,空間複雜度的比較少,所以著重學習時間複雜度,當然時間是沒有乙個準備的度量標準,因為每個機子都不一樣,這裡就從普遍意義上面的計算開始:

乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示。若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。即是要有乙個f(n)滿足頻率/f(n)在n很大時是乙個不為0的常數。最壞情況下的時間複雜度稱最壞時間複雜度。

一般不特別說明,討論的時間複雜度均是最壞情況下的時間複雜度

。平均時間複雜度是指所有可能的輸入例項均以等概率出現的情況下,演算法的期望執行時間。

按數量級遞增排列,常見的時間複雜度有:常數階o(1),對數階o(log

2n),線性階o(n), 線性對數階o(nlog

2n),

k次(k>=2)方階o(n

k),指數階o(2n)。

簡化式: 1

<

log2

n<

n<

nlog2n

<2n

最主要的問題是怎麼求取時間複雜度呢?

(1)如果演算法的執行時間不隨著問題規模n的增加而增長,即使演算法中有上千條語句,其執行時間也不過是乙個較大的常數。此類演算法的時間複雜度是o(1)。(2)當有若干個迴圈語句時,演算法的時間複雜度是由巢狀層數最多的迴圈語句中最內層語句的頻度f(n)決定的。(3)演算法的時間複雜度不僅僅依賴於問題的規模,還與輸入例項的初始狀態有關

資料結構時間複雜度和空間複雜度

1 演算法o n 關注n的階數,當數十分大的時候,常數可以忽略。o n 又稱為大o記法。2 t n o f n 隨著n變化而變化,f n 是某個函式,執行的次數等於時間,一般情況下,t n 增長最慢的演算法最優。4 推到o n 1,用1取代時間中所有加法常數 哪些可以忽略 2,在修改後的執行函式中,...

資料結構 時間複雜度和空間複雜度

通常我們衡量乙個演算法的複雜度時,會有兩種演算法效率分析方式 第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。時間複雜度主要衡量的是乙個演算法的執行速度,空間複雜度主要衡量一乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小。所以對空間複雜...

資料結構 時間複雜度和空間複雜度

演算法 algorithm 是對特定問題求解步驟的一種描述。解決乙個問題往往有不止一種方法,演算法也是如此。那麼解決特定問題的多個演算法之間如何衡量它們的優劣呢?有如下的指標 1 時間複雜度 執行這個演算法需要消耗多少時間。2 空間複雜度 這個演算法需要占用多少記憶體空間。同乙個問題可以用不同的演算...