我正在研究空间和时间的复杂性,并且遇到了这个
O(n +(n / 2 + n / 4 ...... n / n))= O(n + log(n))。
我没有得到这是怎么回事?任何人都可以提供一些见解吗?
答案 0 :(得分:7)
我认为这取决于你的分母。总和
n + n / 2 + n / 4 + n / 8 + ... + n / n
总结为O(n),因为它等于
n(1 + 1/2 + 1/4 + 1/8 + ...)
≤2n
因此,技术上正确的是它是O(n + log n),因为O(n + log n)= O(n),但这是一种非常奇怪的写入方式。 O(n)是一种更好的方法来写出来。
总和
n + n / 2 + n / 4 + n / 6 + n / 8 + ... + n / n
致力于
n(1 + 1/2 + 1/4 + 1/6 + 1/8 + ... + 1 / n)
= n(1 +(1/2)*(1 + 1/2 + 1/4 + 1/6 + ... + 1 /(n / 2)))
= n(1 +(1/2)H _ {(n / 2)})
=Θ(n log n)
这是有效的,因为nth harmonic number是Θ(log n)。这可能更接近于预期,但用+代替×。
希望这有帮助!