演算法時間效率分析

2021-10-02 10:27:15 字數 3318 閱讀 7348

求效率函式的一般方法

big-o 表示式

演算法的複雜度分析包括空間複雜度分析和時間複雜度分析。

對於現代計算機,記憶體已經比較足夠,對演算法效率影響最大的是時間複雜度。

在時間複雜度的分析中,拋開具體機器,我們主要研究的是執行的語句數量。

執行的語句數量取決於需要處理的元素個數和演算法的迴圈結構。

引入函式f(n

)f(n)

f(n)

來表示乙個演算法的效率,其中n

nn表示要處理的資料量。

效率分析我們主要關注迴圈結構,現就幾種典型的迴圈結構**它的演算法效率公式:

線性迴圈(linear loops)

對數迴圈(logarithmic loops)

巢狀迴圈(nested loops)

線性迴圈

i=0;

while

(i

在這個結構中,應用**會執行n次。

執行的語句數量與處理的資料量成正比。

這一部分的效率函式可以表示為:f(n

)=

nf(n)=n

f(n)=n

。同理:

i=0;

while

(i

這一部分的效率函式可以表示為:f(n

)=n/

2f(n)=n/2

f(n)=n

/2。對數迴圈

i=0;

while

(i

在這個結構中,應用**會執行log

2(n)

log_2(n)

log2​(

n)次。這一部分的效率函式可以表示為:f(n

)=lo

g2(n

)f(n)=log_2(n)

f(n)=l

og2​

(n)。

同理:

i=n;

while

(i>=1)

這一部分的效率函式可以表示為:f(n

)=lo

g2(n

)f(n)=log_2(n)

f(n)=l

og2​

(n)。

線性對數迴圈

i=1;

while

(ii=i+1;

}

內層迴圈為對數迴圈,應用**執行次數為log

2(n)

log_2(n)

log2​(

n)。外層迴圈為線性迴圈,內層**執行次數為n

nn,因此對數迴圈總共執行n

nn次。

應用**執行總次數為 n∗l

og2(

n)

n*log_2(n)

n∗log2

​(n)

。這一部分的效率函式可以表示為:f(n

)=n∗

log2

(n

)f(n)=n*log_2(n)

f(n)=n

∗log

2​(n

)。多項式迴圈

i=1;

while

(ii=i+1;

}

對於內層迴圈,應用**執行n

nn次;對於外層迴圈,內部結構執行n

nn次。

應用**總共執行n

2n^2

n2次。因此,這一部分的效率函式可以表示為:f(n

)=n2

f(n)=n^2

f(n)=n

2。依賴多項式迴圈

i=1;

while

(ii=i+1;

}

對於內層迴圈,應用**的執行次數取決於外層迴圈,平均執行次數為(n+

1)/2

(n+1)/2

(n+1)/

2。外層迴圈的執行次數為nnn。

應用**總共執行n∗(

n+1)

/2

n*(n+1)/2

n∗(n+1

)/2次。

因此,它的效率函式可以表示為:f(n

)=n∗

(n+1

)/

2f(n)=n*(n+1)/2

f(n)=n

∗(n+

1)/2

i=1;

while

(ii=i+1;

}k=n;

while

(k>=1)

對於巢狀的迴圈結構,執行次數為外層迴圈次數乘以內層迴圈次數;對於並列的迴圈結構,執行次數為將兩個迴圈的次數相加。上述**的演算法效率公式為f(n

)=n2

+log

2(n)

f(n)=n^2+log_2(n)

f(n)=n

2+lo

g2​(

n)。表示某一演算法的效率處在哪乙個檔次

計算方法:

保留演算法效率公式f(n

)f(n)

f(n)

的最高次項(演算法複雜程度最高的項),攝取其餘項。

將其係數設為1。

項的複雜程度由低到高分別為: log

2(n)

log_2(n)

log2​(

n), n

nn, n∗l

og2(

n)

n*log_2(n)

n∗log2

​(n)

, n

2n^2

n2, n

3n^3

n3, …, n

kn^k

nk, 2

n2^n

2n, n !n!

n!。

例如:f(n

)=4∗

n3+n

∗log

2(n)

+50∗l

og2(

n)

f(n)=4*n^3+n*log_2(n)+50*log_2(n)

f(n)=4

∗n3+

n∗lo

g2​(

n)+5

0∗lo

g2​(

n)最高次項為:4∗n

34*n^3

4∗n3

係數設為1:n

3n^3

n3因此,這個演算法的big-o表示式為:o(n

3)

o(n^3)

o(n3

)

時間效率分析

也許對於學過資料結構的同胞來說,這是乙個再簡單不過的問題,但對於剛起步的菜鳥來說,這是個很寶貴的資源,在各大oj過題,時有超時現象出現,苦逼的我只能換思路,換 但自從有了時間效率分析,媽媽再也不用擔心我會超時了,那麼接下來,我便用最菜鳥的語言譜寫較完善的時間效率分析。演算法的時間效率分析主要在於計算...

排序演算法效率分析

目錄 排序方法 時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好 空間複雜度 穩定性氣泡排序 o n2 o n2 o n o 1 穩定選擇排序 o n2 o n2 o n2 o 1 不穩定插入排序 o n2 o n2 o n o 1 穩定希爾排序 o n1.3 o n2 o n o 1 不穩定快...

演算法分析 演算法的漸進效率分析

一般用於界定函式集合的上界,漸進表示式o g n 的含義就是,c為正常數,函式集合o中的元素的最大值不會超過c.g n f n o g n 的含義是,函式f n 的屬於集合o g n 因為函式集合o中的最大值為c.g n 所以f n 的最大值為c.g n 由於只是漸進的上界,所以當函式g n 的階數...