時間複雜度和空間複雜度, 使用 大o的漸進表示法表示(只保留最高端項).
1 時間複雜度: 時間複雜度可以度量 演算法執行的時間長短.
(1) 常數階o(1)
int a =1;
int b =2;
int c =
3;
(2) 線性階o(n)
for
(i =
1; i <= n; i++
)
(3) 對數階o(logn)
int i =1;
while
(i < n)
(4) 線性對數階o(nlogn)
for
(m =
1; m < n; m++
)}
(5) 平方階o(n²)
for
(x =
1; i <= n; x++
)}
2 空間複雜度: 空間複雜度可以度量 演算法執行所需儲存空間的大小.(1) 空間複雜度 o(1)如果演算法執行所需要的臨時空間不隨著某個變數n的大小而變化,即此演算法空間複雜度為乙個常量.
int i =1;
int j =2;
++i;
j++;
int m = i + j;
(2) 空間複雜度 o(n)第一行new了乙個陣列出來, 這個資料占用的大小為n, 後面雖然有迴圈,但沒有再分配新的空間,因此這段**的空間複雜度主要看第一行即可,即為o(n).
int
m =newint
[n]for
(i =
1; i <= n;
++i)
3 常見的幾種:(1) 氣泡排序時間複雜度o(n^2) 空間複雜度o(1)(2) 二分查詢時間複雜度o(logn) 空間複雜度o(1)(3) 階乘時間複雜度o(n) 空間複雜度o(n)
(4) 斐波那契數列時間複雜度o(2^n) 空間複雜度o(n).
4. 各種資料結構.
(1) 紅黑樹 插入操作的平均時間複雜度為o(logn),最壞時間複雜度為o(logn)
(2) b+樹 插入操作的平均時間複雜度為o(logn),最壞時間複雜度為o(logn)
(3) hash表 插入操作的平均時間複雜度為o(1),最壞時間複雜度為o(n)
(4) 排序鍊錶 插入操作的平均時間複雜度為o(n),最壞時間複雜度為o(n)
(5) 排序二叉樹 插入操作的平均時間複雜度為o(logn),最壞時間複雜度為o(logn)
5.七大排序的比較.
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...