算法复杂度和大 O 符号
Algorithm complexity and big O notation
我正在参加关于算法的在线 class,我有以下测验。我弄错了,正在尝试理解答案的原因。
Which of the following is O(n^3)?
a) 11n + 151 gn + 100
b) 1/3 n^2
c) 25000 n^3
d) All of the above.
正确答案是 (d) 以上所有。原因是当 n 变大时,Big-O 符号仅提供函数增长率的上限。
我不确定为什么答案不是 (c)。例如,(b) 的上限小于 n^3.
原因是形式上,大O符号是渐近的上限。
所以 1/3*n^2
是 O(n^2)
,但它也是 O(n^3)
,也是 O(2^n)
。
虽然在关于复杂性的日常转换中,O(...)
被用作严格的(上限和下限),theta 符号或 Θ(...)
是技术上正确的术语。
有关详细信息,请参阅 What is the difference between Θ(n) and O(n)?
我正在参加关于算法的在线 class,我有以下测验。我弄错了,正在尝试理解答案的原因。
Which of the following is O(n^3)?
a) 11n + 151 gn + 100
b) 1/3 n^2
c) 25000 n^3
d) All of the above.
正确答案是 (d) 以上所有。原因是当 n 变大时,Big-O 符号仅提供函数增长率的上限。
我不确定为什么答案不是 (c)。例如,(b) 的上限小于 n^3.
原因是形式上,大O符号是渐近的上限。
所以 1/3*n^2
是 O(n^2)
,但它也是 O(n^3)
,也是 O(2^n)
。
虽然在关于复杂性的日常转换中,O(...)
被用作严格的(上限和下限),theta 符号或 Θ(...)
是技术上正确的术语。
有关详细信息,请参阅 What is the difference between Θ(n) and O(n)?