[英]Computational complexity and recursion - Is this analysis correct?
為簡單起見,將列表的大小視為 3 的冪。
if j-i+1 <= 3:
# Compute their minimum
return min(i:j+1)
if
語句 forms 是基本情況。 上述語句的時間復雜度為O(1)
。 但是, if 語句將被執行n
次。
T(n)
|
______________________|______________________
| | |
| | |
T(n/3) T(n/3) T(n/3)
| | |
_______|_______ _______|_______ _______|_______
| | | | | | | | |
| | | | | | | | |
T(n/9) T(n/9) T(n/9) T(n/9) T(n/9) T(n/9) T(n/9) T(n/9) T(n/9)
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) --- (n/3) * T(1)
從遞歸樹中應該很明顯,對於一個大小為n
的數組, if
語句將被執行n/3
次。 因此, if
語句的整體復雜度為O(n)
。
if
被執行n/3
次而不是n
的原因是當我們遇到大小為 3 的子數組時遞歸結束。 如果遞歸在遇到大小為 1 的子數組時結束,那么它將執行 n 次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.