時間複雜度和空間複雜度

2021-10-08 10:08:54 字數 864 閱讀 7327

乙個演算法與執行**行數的相關性,且隨著某個變數的增長而增長。

例如:

n =

int(

input()

)a = n

這裡的**永遠都只是兩行**的時間單位,不會隨變數n的增長而增長。所以時間複雜度為o(1)

n = int(input())

a = 1

while a < n :

a += 1

這裡的**的執行行數為2n + 1次,與n的值線性相關,時間複雜度為o(n)

n =

int(

input()

)a =

1while a < n :

a = a *

2

設執行次數為k,2^k >= n→k>= logn(2為底數),所以時間複雜度為o(logn)

n =

int(

input()

)a =

3while a < n :

a = a **

2

同樣設執行次數為k,3 ** (2**k)> n→k > log2(lnn/ln3),所以時間複雜度為o(log2(lnn/ln3))

所以時間複雜度o就是**與變數n的相關函式,執行行數與時間複雜度函式o線性相關。

空間複雜度主要指分配給變數的空間

一般分配空間有兩種模式,例如想要知道某個數是不是100以內的質數你可以:

1. 輸入你想要查詢的值,通過函式運算判斷

2. 事先將100以內的所有質數存到乙個列表中,查詢時直接通過列表查詢

這裡模式2的空間複雜度就是o(n)。

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

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

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

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

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

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