輸入複雜度為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 存在乙個正...