【发布时间】:2017-10-03 20:21:55
【问题描述】:
我很难用 O 表示法定义以下算法的运行时间。我的第一个猜测是 O(n),但迭代次数和我应用的次数之间的差距并不稳定。我如何错误地定义了这个?
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;
}
【问题讨论】:
-
确切地说,bit-O 是针对上限的,所以有很多可能的答案。例如,说这个算法是 O(n*n) 是正确的,但相当具有误导性。如果可能,通常最好使用 big-Theta 来说明运行时间。已接受答案中的分析对大 Theta 同样有效。
标签: time-complexity computer-science asymptotic-complexity computer-science-theory