執行次數為線性的, t(n)
def
eatbread
(n):
for i in n:
print
("eat bread"
,i)
執行次數為對數,t(n)=logn
每一次都是減去一半
def
eatbread
(n):
i =1while i<=n:
i = i *
2print
("eat bread"
)
執行次數為常數,t(n)=1.
def eatbread(n):
print(「eat bread」)
執行次數為多項式,t(n)=0.5*n^2+0.5n
一條長10寸的麵包,吃掉第乙個一寸需要1天時間,吃掉第二個一寸需要2天時間…吃完要多少天
1加到10,[(n+1)*n]/2
def
eat(n)
:while iwhile jprint
("等待一天"
) j+=
1print
("eat bread"
) i+=
1
概念:若存在函式 f(n),使得當n趨近於無窮大時,t(n)/ f(n)的極限值為不等於零的常數,則稱 f(n)是t(n)的同數量級函式。記作 t(n)= o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
一段迴圈中,如果裡面帶有判斷條件,有可能第乙個條件就跳出迴圈,那麼o(1),有可能最後才跳出迴圈,那麼o(n);第一種情況就是最好情況時間複雜度,第二種是最壞情況時間複雜度
空間複雜度的描述?
空間複雜度是指除了原本的資料儲存空間外,演算法執行還需要額外的儲存空間。例如棧需要儲存大小為n的陣列,這些是無法省掉的,在入棧和出棧過程中,只需要一兩個臨時變數儲存空間,所以空間複雜度是 o(1)
複雜度分析總結
複雜度的總結概要 最近複習演算法,先總結一下最基本的時間複雜度概念和判斷方法。常用七種 不考慮常數係數。判斷 根據n的情況執行的次數 o 1 var n 1000 console.log 輸出一次 n console.log 輸出二次 n console.log 輸出三次 n 不關心常數係數,無論輸...
複雜度分析 時間複雜度分析和空間複雜度分析
其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...
複雜度分析 時間複雜度 空間複雜度
執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...