【问题标题】:Why is the algorithm complexity O(N*log(N+M))? [closed]为什么算法复杂度为 O(N*log(N+M))? [关闭]
【发布时间】:2018-11-26 14:46:41
【问题描述】:

考虑以下code(Github 链接)

变量min最多为M,变量max最多为M*N 我们在区间[min, max] 上运行二进制搜索。我们调用divisionSolvable 的每次迭代都是O(N),所以恕我直言,整体复杂性时间是O(N*log(NM))

你能解释一下为什么不是这样吗?

【问题讨论】:

  • 我真的没有得到反对意见
  • @Elimination 你不提供代码,首先。
  • 好吧,我更喜欢链接到它,因为我不确定复制粘贴它是否合法
  • 你真的应该阅读 how to ask 的指导方针,这是 Stackoverflow @Elimination 中的一个好问题

标签: algorithm time-complexity computer-science complexity-theory


【解决方案1】:

不看链接,注意O(log(NM)) = O(log(N+M))。 事实上,对于N>=2M>=2,我们有:

log (N+M) < log(NM) = log(N) + log(M) < log(N+M) + log(N+M) = 2 log(N+M).

使用O() 的定义来完成它,它会删除常量。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2011-09-03
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多