表明总和Σi到n(logi)是O(nlogn)

use*_*567 4 math big-o

我认为它有效的一种方式是我们可以说, ?_i^{n (log i)} < ?_i^{n (log n)}然后试着争辩它是O(n log n),但是从哪里开始?有什么建议?

tem*_*def 14

如果您只需要显示总和为O(n log n),则可以显示该值

Σlogi≤Σlogn = n log n

因此,您的函数是O(n log n).如果你想更正式,你可以使用常数c = 1和n 0 = 1.

更有趣的问题是通过证明Ω(n log n)下限来证明和是Θ(n log n).为此,请注意总和大于或等于总和中最后n/2项的总和.求和中的每个项至少为log(n/2).这给出了(n/2)log(n/2)=(n/2)(log n-log 2)的下界,其为Ω(n log n).因此,求和为O(n log n)和Ω(n log n),因此它是Θ(n log n).

希望这可以帮助!

  • @ user3196567当然可以!可以这样想:你的总和是log 1 + log 2 + ... + log n.将其拆分为log 1 + log 2 + ... + log(n/2)+ log(n/2 + 1)+ ... + log n.该总和当然至少与log(n/2)+ log(n/2 + 1)+ log(n/2 + 2)+ ... + log n一样大.反过来,该总和至少与log(n/2)+ log(n/2)+ ... + log(n/2)=(n/2)log(n/2)一样大.然后,您可以使用Ω的形式定义来证明(n/2)log(n/2)=Ω(n log n),结果如下所示. (6认同)
  • Downvoter:你能解释我能做些什么来改善这个答案吗? (6认同)
  • 我对Ω(n log n)感到很困惑,能否详细解释一下,非常感谢 (3认同)