我努力在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同样有效。 –