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

2021-10-01 12:53:46 字數 1133 閱讀 7773

輸入複雜度為n,**執行時間複雜度函式o是執行次數f(n)的函式,記做o(f(n))。隨著n的增大,o(f(n))與f(n)增長率相同,用f(n)近似代表o(f(n))。

複雜度計算忽略了係數和低階項。

① o(1),常數階,與n取值無關,執行次數固定,以下執行一次

# 計算1到100的和

n=100

print((

1+n)

*n/2

)

② o(n),線性階,是n的一次函式,以下執行n次

# 計算1到100的和

n=100

sum=

0for i in

range

(n+1):

sum=

sum+i

print

(sum

)

③ o(n2),平方階,是n的平方函式,以下執行n2次

n=

100for i in

range

(n):

for j in

range

(i, n)

sum=

sum+j

print

(sum

)

兩個迴圈巢狀是n2,三個巢狀就是n3,依次類推

④ o(logn),對數階,是n的對數函式。2i=n,i=logn

n=

100i=

1while i < n:

i=i*

2print

(i)

以下為幾種常見複雜度

常用的時間複雜度所耗費的時間從小到大依次是:

o(1) < o(logn) < o(n) < o(nlogn)

< o(n2) < o(n3) < o(2n)

< o(n!) < o(nn)

較好一般

較差除非特別說明,一般提到的時間複雜度都是情況最壞的複雜度

演算法的空間複雜度是指演算法執行所需要的輔助空間。

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

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

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

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

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

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