2017-05-05 88 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增長。