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

2021-09-23 18:54:24 字數 1642 閱讀 1058

int i, j;

for(i=0; i < n; i++)

void function(int count)

`

函式體是列印這個引數,這很好理解。function函式的時間複雜度是o(1),所以整體的時間複雜度就是迴圈的次數o(n)。 假如function是下面這樣,又該如何呢:

void function(int count) 

}

事實上,這和之前我們講解平方階的時候舉的第二個例子一樣:function內部的迴圈次數隨count的增加(接近n)而減少,所以根據遊戲攻略演算法的時間複雜度為o(n^2)。 接著使出殺手鐗,給魚油們乙個挑戰的機會! 嘗試自己分析以下程式的時間複雜度:

n++;

function(n);

for(i=0; i < n; i++)

for(i=0; i < n; i++)

}void function(int count)

}

常用的時間複雜度所耗費的時間從小到大依次是:o(1) < o(logn) < (n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n) o(1),o(logn),o(n),o(n^2)

我們前邊已經給大家舉例談過了,至於o(nlogn)小甲魚說了將會在今後的課程中介紹。 而像o(n^3)之後的這些,由於n值的增大都會使得結果大得難以想象,沒必要去討論它們。

從心理學角度講,每個人對將來要發生的事情都會有乙個預期。 譬如看半杯水,有人會說:哇哦,還有半杯哦!但有人就會失望的說:天,只有半杯了。 一般人常出於一種對未來失敗的擔憂,而在預期的時候趨向做最壞打算。這樣,即使最糟糕的結果出現,當事人也有了心理準備,比較容易接受結果,假如結局並未出現最壞的狀況,這也會使人更加快樂,瞧,事情發展的還不錯嘛!嗯,這是典型的**手法。 演算法的分析也是類似,我們查詢乙個有n個隨機數字陣列中的某個數字,最好的情況是第乙個數字就是,那麼演算法的時間複雜度為o(1),但也有可能這個數字就在最後乙個位置,那麼時間複雜度為o(n)。 平均執行時間是期望的執行時間,最壞執行時間是一種保證。 在應用中,這是一種最重要的需求,通常除非特別指定,我們提到的執行時間都是最壞情況的執行時間。

我們在寫**時,完全可以用空間來換去時間。 舉個例子說,要判斷某年是不是閏年,你可能會花一點心思來寫乙個演算法,每給乙個年份,就可以通過這個演算法計算得到是否閏年的結果。 另外一種方法是,事先建立乙個有2050個元素的陣列,然後把所有的年份按下標的數字對應,如果是閏年,則此陣列元素的值是1,如果不是元素的值則為0。 這樣,所謂的判斷某一年是否為閏年就變成了查詢這個陣列某乙個元素的值的問題。 第一種方法相比起第二種來說很明顯非常節省空間,但每一次查詢都需要經過一系列的計算才能知道是否為閏年。 第二種方法雖然需要在記憶體裡儲存2050個元素的陣列,但是每次查詢只需要一次索引判斷即可。 這就是通過一筆空間上的開銷來換取計算時間開銷的小技巧。到底哪一種方法好?其實還是要看你用在什麼地方。 演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法的空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。 通常,我們都是用「時間複雜度」來指執行時間的需求,是用「空間複雜度」指空間需求。 當直接要讓我們求「複雜度」時,通常指的是時間複雜度。 顯然對時間複雜度的追求更是屬於演算法的潮流!

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

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

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

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

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

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