2017-05-05 83 views
2

我有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,并且可能这将是足够大的最相关行为。但即使在A1完成后,这也不会反映出,A2和A3仍然需要很长时间。

所以我想知道,我应该如何解释?仅仅说复杂度为O(n Log n)就足够了?

+0

请参阅http://stackoverflow.com/questions/487258/what-is-a-plain-english-explanation-of-big-o-notation – m69

回答

3

的总时间复杂度为:

为O(n log n)的+ O(K N)+ O(Q n)的

其中,如果假定KQ是参数生长速度比或类似于Log n较慢,则总时间复杂度为:

为O(n log n)的

因为我们使用的是大记号。否则,总的时间复杂度是初始总和(或其中的一部分)。


这样做是为了保持术语,将主宰其他字词时n增长。