時間複雜度和空間複雜度

2021-10-10 14:12:13 字數 995 閱讀 7718

o(1): constant complexity 常數複雜度

o(log n): logarithmic complexity 對數複雜度

o(n): linear complexity 線性時間複雜度

o(n^2): n square complexity 平方

o(n^3): n cubic complexity 立方

o(2^n): exponential growth 指數

o(n!): factorial 階乘

注意:只看最高複雜度的運算

計算:1 + 2 + 3 + … + n

• 方法一:從1到n的迴圈累加——(o(n)的複雜度) y = 0 for i = 1 to n: y += i

• 方法二:求和公式 sum = n(n+1)/2——(o(1)複雜度,因為只執行1次) y = n * (n + 1) / 2

更複雜的情況:遞迴

fib: 0, 1, 1, 2, 3, 5, 8, 13, 21, ……

• f(n) = f(n - 1) + f(n - 2)

• 面試 (直接用遞迴)——不建議,可以快取重複資料提高效能 int fib(int n)

二叉樹遍歷 - 前序、中序、後序:時間複雜度是多少?——o(n)

圖的遍歷:時間複雜度是多少?——o(n)

搜尋演算法:dfs、bfs 時間複雜度是多少?——o(n)

二分查詢:時間複雜度是多少?——o(logn)

陣列的長度

遞迴的深度(特殊說明)

例項分析:

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

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

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

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

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

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