空間複雜度的計算

2021-09-29 13:57:20 字數 866 閱讀 1587

o() 大o表示法表示複雜度。

時間複雜度公式為: t(n) = o( f(n) ),其中f(n) 表示每行**執行次數之和,而 o 表示正比例關係,這個公式的全稱是:演算法的漸進時間複雜度。注意:大o符號表示法並不是用於來真實代表演算法的執行時間的,它是用來表示**執行時間的增長變化趨勢的,所以只保留最高端項並且忽略常數項。

常見的幾種複雜度: o(1)、o(n)、o(n²)、o(logn)。還有更高的比如指數階和k次方階,但我覺得不會有誰想用怎麼高複雜度的演算法,就只分析以上4種的計算方法。

1.常數階 o(1)。無論**執行了多少行,只要是沒有迴圈等複雜結構,因此它消耗的時間不隨著某個變數的增長而增長。記住要用常數1取代執行時間中的所有加法常數。

2.線性階 o(n)。有for迴圈,裡面的**會執行n遍,因此它消耗的時間是隨著n的變化而變化的。

3.平方階o(n²)。 如果把 o(n) 的**再巢狀迴圈一遍,它的時間複雜度就是 o(n²) 了。當然巢狀的迴圈時m次,就是o(m*n)。

4.對數階o(logn)。這個需要舉例:

int i = 1;

while(i同理

空間複雜度:演算法在執行過程中臨時占用儲存空間大小的乙個量度,同樣反映的是乙個趨勢,通常用 s(n) 來定義。

空間複雜度比較常用的有:o(1)、o(n)、o(n²)

1.如果演算法執行所需要的臨時空間不隨著某個變數n的大小而變化,即此演算法空間複雜度為乙個常量 o(1)。注意: 如果這段**裡有for迴圈,但沒有再分配新的空間,時間複雜度也不會因為迴圈而改變。

2.舉例 int m = new int[n]。這段**中,建立了乙個陣列出來,這個資料占用的大小為n,因此空間複雜度為 o(n)。和時間複雜度一樣,如果加乙個迴圈在這行**前面,空間複雜度變為 o(n²)。

計算時間複雜度與空間複雜度

如何衡量乙個演算法的好壞?複雜度 空間複雜度 時間複雜度 事後統計法 就是在演算法的程式執行結束後,根據實際執行結果衡量演算法好壞 事前估計法 就是在程式執行之前,先按照程式 來預估演算法的好壞 時間複雜度 用基本指令的執行次數而不是執行時間代表時間複雜度,同乙個程式在不同配置的機器下的執行時間不一...

時間複雜度和空間複雜度計算

時間複雜度 首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。當我們面前有多個演算法時,我們可以通過計算時間複雜度,判斷出哪乙個演算法在具體執行時花費時間最多和最少。常見的時間複雜度有 常數階o 1 對數階o log2 n 線性階o n 線性對數階o n log2...

時間複雜度和空間複雜度的計算

時間複雜度 1.一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f n 因此,演算法的時間複雜度記做 t n o f n 分析 隨著模組n的增大,演算法執行的時間的增長率和 f n 的增長率成正比,所以 f n 越小,演算法的時間複雜度越低,演算法的效率越高。2.在計算時間複雜度的時候...