2016-01-22 159 views

回答

1

該算法的複雜功能是

T(n) = T(n/2) + 1 
T(1) = 1 

運用master-theorem,我們會得到

a = 1 
b = 2 
c = 0 (1 = n^0) 

log b(A) = log2(1) = 0 = 0 c, thus case 2 
apply values and the result is O(log n). 

由於@guillaume已經正確地指出,這可以通過使用解決了很多更容易一個線性函數。

+0

@cstac這是使用主定理時出現的解決方案(除非我在計算中犯了任何錯誤 - 我會仔細檢查它)。可能他期待確切的解決方案?應該有一些關於什麼是錯的筆記。或者乾脆問他 – Paul

+0

我也用解決方案 – cstac

+0

@cstac通過精確求解解決了遞推關係。主定理只適用於你想找到復現的複雜性順序。 – Paul

1

您可以直接計算:它是最接近的2^n,最大或相等。

您計算L = LOG2(n),並且你把2^L,或2 ^(L + 1)

複雜度爲O(LOG2 N):LOG2個運算。