演算法的基礎概論及其複雜度

2021-10-10 11:39:32 字數 1467 閱讀 7458

定義:演算法是用於解決一系列問題的步驟

public

static

intadd

(int a,

int b)

public

static

intsum

(int n)

return sun;

}

使用不同的演算法,解決同乙個問題,效率可能不一樣

概念:時間複雜度:估算指令執行的次數

空間複雜度:估算演算法所占用的儲存空間

複雜度的表示方法:

大o表示法:一般用大o來描述演算法複雜度,它表示的是演算法n對應的複雜度

忽略常數、係數、低階

所以l og

2n}lo

g2​n

和l og

9n}lo

g9​n

都稱為log

n}

logn

常見的複雜度

執行次數

複雜度非正式術語

12o(1)

常數階2n + 3

o(n)

線性階n2 + 2n

o(n2)

平方階4log

2n}lo

g2​n

+ 6o(l og

n}

logn

)對數階

nl og

2n}lo

g2​n

+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 度量方法 單個常量,變數 由機器和編譯器規定的型別儲存決定。陣列變數 所佔空間等於陣列大小乘以單個陣列元素所佔的空間。結構變數 所佔空間等於各個成員所佔空間的累加 ...

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

演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。演算法的複雜性體現在執行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間 即暫存器 資源,因此複雜度分為時間和空間複雜度 簡單來說,時間複雜...