演算法複雜度

2022-05-01 10:03:07 字數 1179 閱讀 5974

雖然前端一般情況下並不需要計算演算法複雜度,但了解一下還是相當有必要的

時間複雜度

1.時間頻度

由於演算法執行的時間無法計算,為評判演算法執行工作量,將語句執行的次數稱為時間頻度,記為t(n)

2.時間複雜度

n稱為問題的規模,當n不斷變化時,t(n)也會不斷變化,為了表示其呈現的規律,我們引入時間複雜度的概念,

若有某個輔助函式f(n),在當n無窮大的時候t(n)/f(n)為不為0的常數,記做t(n)=o(f(n)),o(f(n))稱為演算法的漸進時間複雜度,簡稱時間複雜度。

乙個簡單的例子:

function testtime()} }

t(n)= n+1+n(n+1)+n*n= n2+2n+1

t(n)=o(n2)

3.常用時間複雜度

常數階o(1)、線性階o(2n)、對數階o(log2n)、次方階o(nk)、指數階o(2n)

時間複雜度對比:

通過我盜的圖,可知:

o(1)< o(log2n)< o(2n)< o(nk)< o(2n)

4.如何快速計算o(f(n))

⑴ 找出演算法中的基本語句;演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。

⑵ 計算基本語句的執行次數的數量級,這個數量級就是o(f(n))

空間複雜度

空間複雜度為該演算法所耗費的儲存空間,包括儲存演算法本身所需要的框架,演算法輸入輸出資料所佔的框架以及演算法在執行過程中臨時占用的框架。

輸入輸出資料所占用的儲存空間: 由要解決的問題決定的,是通過參數列由呼叫函式傳遞而來的,它不隨本演算法的不同而改變。

儲存演算法本身所占用的儲存空間:與演算法書寫的長短成正比,要壓縮這方面的儲存空間,就必須編寫出較短的演算法。

演算法在執行過程中臨時占用的儲存空間: 隨演算法的不同而異,有的演算法只需要占用少量的臨時工作單元,而且不隨問題規模的大小而改變,我們稱這種演算法是「就地\"進行的,是節省儲存的演算法,如這一節介紹過的幾個演算法都是如此;有的演算法需要占用的臨時工作單元數與解決問題的規模n有關,它隨著n的增大而增大,當n較大時,將占用較多的儲存單元,例如將在第九章介紹的快速排序和歸併排序演算法就屬於這種情況。

參考: 

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...

演算法複雜度 時間複雜度和空間複雜度

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...

演算法複雜度 時間複雜度和空間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...