我有3种算法(A1,A2和A3),它们的估计时间复杂度分别为O(n Log n)
,O(K n)
和O(Q n)
,其中K和Q是动作的不同参数。然后我有第四个算法连续运行这3个算法(每个算法都需要前面的结果)。
我对如何估计算法套件的总复杂性感到困惑。据我所知,O(n Log n)
的增长速度比O(K n)
和O(Q n)
快,因此时间消耗方面最重要的部分是A1,这可能是最相关的行为。一个n
足够大。但这并不能反映出即使在A1完成后,A2和A3仍需要很长时间。
所以我想知道,我该如何解释?仅仅说复杂性是O(n Log n)
就足够了吗?
答案 0 :(得分:3)
总时间复杂度为:
O(n Log n)+ O(K n)+ O(Q n)
如果假设K
和Q
是比Log n
增长慢或类似的参数,则总时间复杂度为:
O(n Log n)
因为我们使用的是大写符号。否则,总时间复杂度是初始总和(或部分)。
这个想法是在n
增长时保持支配其他术语的术语。