定義:演算法是用於解決一系列問題的步驟
public
static
intadd
(int a,
int b)
public
static
intsum
(int n)
return sun;
}
使用不同的演算法,解決同乙個問題,效率可能不一樣
概念:時間複雜度:估算指令執行的次數
空間複雜度:估算演算法所占用的儲存空間
複雜度的表示方法:
大o表示法:一般用大o來描述演算法複雜度,它表示的是演算法n對應的複雜度
忽略常數、係數、低階
所以l og
2n}lo
g2n
和l og
9n}lo
g9n
都稱為log
n}
logn
常見的複雜度
執行次數
複雜度非正式術語
12o(1)
常數階2n + 3
o(n)
線性階n2 + 2n
o(n2)
平方階4log
2n}lo
g2n
+ 6o(l og
n}
logn
)對數階
nl og
2n}lo
g2n
+34o(nlog
n}
logn)nlog
n}
logn
階2n3 + 3n2 + 2
o(n3)
立方階2n
o(2n)
指數階
例如:斐波那契數列
/**
* 斐波那契數列 0 1 1 2 3 5 8……
* 求第n個費波納希數列的值
*/private
static
intfeb
(int n)
return
feb(n -1)
+feb
(n -2)
;}
/**
* 0 1 2 3 4 5 6 7
* 費斐波那契數列 0 1 1 2 3 5 8 13……
* 求第n個費波納希數列的值
*/private
static
intfeb2
(int n)
return second;
}}
演算法的優化方向 演算法複雜度基礎
演算法進行計算的時候,儲存資料需要占用一定的空間,執行計算需要耗費一定的時間時間。演算法複雜度就是在演算法計算過程中對 空間 與 時間 的評價。解決同乙個問題,不同演算法所有的空間和時間是不同的,這取決於演算法是如何設計的。同樣,同乙個問題,規模不同時,同乙個演算法所用的空間和時間也不同。例如 某排...
時間複雜度 空間複雜度 演算法基礎
1空間複雜度 演算法的空間效能分析 1 演算法的空間效能的影響因素 指令空間 由機器決定 資料空間 常量,變數占用空間 環境棧空間 2 度量方法 單個常量,變數 由機器和編譯器規定的型別儲存決定。陣列變數 所佔空間等於陣列大小乘以單個陣列元素所佔的空間。結構變數 所佔空間等於各個成員所佔空間的累加 ...
演算法基礎 時間複雜度和空間複雜度
演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。演算法的複雜性體現在執行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間 即暫存器 資源,因此複雜度分為時間和空間複雜度 簡單來說,時間複雜...