我需要设计一个算法,能够在给定的O符号下进行一些计算。我已经有一段时间没有用O符号进行计算了,对如何将不同的O符号相加有点困惑。
O(n) * O(log n) = O(n log n)
O(n) + O(n) = O(2n) = O(n)
O(n) * O(log n) + O(n log n) = O(n log n) + O(n log n) = O(n log n)
这些正确吗?我还忽略了哪些规则?
乘法的规则非常简单:查看链接
O(f) * O(g) = O(f * g)
如果你想让它适用于任意函数,那么两个O
术语的总和更难计算。
但是,如果f ∈ O(g)
,那么f + g ∈ O(g)
。
因此,你的计算是正确的,但你原来的标题不正确;
O(n) + O(log n) = O(n)
O(n) + O(log n) = O(n log n)
。但是他在帖子中提到的关系是正确的:O(n) * O(log n) = O(n log n)
。 - schO(log(n))
是O(n)
的子集,所以O(n) + O(log n) = O(n)
。 - phihag
O(n) + O(log n) = O(n log n)
)现在是正确的。 - ninjagecko