【发布时间】: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