【问题标题】:Is a time complexity of O(nlogn) + O(n) just O(nlogn)?O(nlogn) + O(n) 的时间复杂度是否只是 O(nlogn)?
【发布时间】:2018-09-12 23:55:37
【问题描述】:

假设我有一个长度为n 的数组,我使用排序算法对它进行排序,时间为nlogn。得到这个排序后的数组后,我遍历它以找到任何具有线性时间的重复元素。我的理解是,由于操作是分开进行的,所以这将是时间O(nlogn) + O(n) 而不是O(nlogn+n)。如果是这样的话,nlogn 是否会超过线性时间复杂度,使最终时间复杂度为O(nlogn)

【问题讨论】:

  • 你的直觉是正确的,但你的措辞不是很准确。我建议您阅读大 O 时间复杂度的定义,一旦您掌握了基本概念,您就会更加清楚。
  • O(m) + O(n) = O(max(m, n))
  • @0x499602D2 不完全是,如果 m 和 n 彼此独立(例如在 V 节点和 E 边上的路径查找),那么 O(m) + O(n) = O(m+n)
  • @Budd 你是对的。那么O(f(n)) + O(g(n)) = O(max(f(n), g(n))) 会更准确吗?
  • 对于大 n 复杂度将是 O(nlogn)

标签: algorithm time-complexity big-o


【解决方案1】:

是的,因为 log(n) > 1 表示大 n,所以 O(nlog(n)) 是 O(n) 的超集

【讨论】:

    【解决方案2】:

    O(nlogn) + O(n) 而不是 O(nlogn+n)

    没有这样的事情; O(n log n) + O(n) 和 O(n log n + n) 相等,且都等于O( n 日志 n)。所以一个函数不可能在一个而不是另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2021-10-22
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2020-01-10
      • 2013-02-03
      相关资源
      最近更新 更多