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

2021-07-27 11:11:41 字數 1372 閱讀 7339

(1)演算法o(n),關注n的階數,當數十分大的時候,常數可以忽略。o(n)又稱為大o記法。

(2)t(n)=o(f(n)),隨著n變化而變化,f(n)是某個函式,執行的次數等於時間,一般情況下,t(n)增長最慢的演算法最優。

(4)推到o(n):

1,,用1取代時間中所有加法常數(哪些可以忽略)。

2,在修改後的執行函式中,只保留最高項。

3,如果最高項存在且不是1,去除這個最高項相乘的常數。例如:3n^3  變成n^3,n的三次方。

4,得到最後結果是大o階

(一)常數階:

例如:

system.out.println("m 轉換為string型後與整數20的求和結果為: "+(str1+20));

system.out.println("str2和str3轉換成字串後相加結果: "+(str2+str3));

時間複雜度是:o(1)而不是o(2),只關注與n有關的。所有的加法常數,只給o(1)就可以了。

(二)線性階

for(int j=0;j

時間複雜度是:o(n)執行了n次,如果是100,則是100次,n=1000則是1000次

(三)平方階

例如:n=100,外層執行一次,內層執行100次,兩個迴圈則是100*100

for(int i=0;i<100;i++)

因此,時間複雜度是:o(n^2),如果是三個巢狀迴圈,則是o(n^3)。

例如:

for(int i=0;ifor(int j=i;isystem.out.print("下標【"+i+"】:"+number[i]+" ");}

當外層i=0,n=100則內層迴圈執行n次,當i=1時候,記憶體迴圈執行n-1次。

於是:n+(n-1)+(n-2)+...+1=n(n+1)/2.高斯先生演算法。=n^2/2+n/2,根據大o推算,時間複雜度是:o(n^2),只算最高端。

(四)對數階

2^x=n,得出:x=log(2)n,x是迴圈的次數,log 2為底,小寫n)因此時間複雜度是:o(logn)

空間複雜度:

s(n)=o(f(n)),f(n)為語句關於n所佔儲存空間的函式。

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

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

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

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

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

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