带有两个变量的Big-O表示法

时间:2015-10-02 12:53:10

标签: algorithm big-o

这源于将程序编写为find the median of two sorted arrays,其大小分别为 if (mb_check_encoding($value, 'UTF-8')) { return $value = utf8_encode($value); } else { return $value; } m,时间复杂度为n

我可以找出O(log(m + n))的解决方案。它符合上述时间要求吗?

我认为这是积极的因为:

O(log(m) + log(n))

换句话说,存在log(m) + log(n) = log(m*n) <= log((m+n)^2) = 2*log(m+n) = O(log(m+n))k = 2。对于任何m0 = n0 = 1,都有m > m0 and n > n0

是否有缺陷,或者我是否正确?

更一般地说,给定常数log(m*n) <= k*log(m + n),我们可以用相同的推理说a吗?

感谢大卫的回答。 维基百科上的Big-O notation也提到了这一点:

log(n^a) = O(log(n))

1 个答案:

答案 0 :(得分:6)

是的,你在所有方面都是正确的。日志增长得足够慢,渐近类对内部函数不是很敏感。