我努力在O表示法中定義以下算法的運行時間。我的第一個猜測是O(n),但迭代和我應用的數字之間的差距並不穩定。我怎麼錯誤地定義了這個?求解:T(n)= T(n/2)+ n/2 + 1
public int function (int n)
{
if (n == 0) {
return 0;
}
int i = 1;
int j = n ;
while (i < j)
{
i = i + 1;
j = j - 1;
}
return function (i - 1) + 1;
}
確切地說,位O是上限,所以有很多可能的答案。例如,說這個算法是O(n * n)是正確的,但相當具有誤導性。如果可能,通常使用big-Theta來陳述運行時間會更好。接受答案中的分析對big-Theta同樣有效。 –