2017-03-17 116 views
-3

我有一個方法,在我的程序中調用兩個線性時間複雜度的其他方法。我不確定這是否會導致該方法如果O(2N)具有時間複雜性。爲什麼兩個O(N)方法被認爲是O(N)?

我知道常數會降低時間複雜度,這會使得方法的時間複雜度爲O(N),但我並不是100%確定的。有人可以詳細說明一下這樣的方法對於時間複雜性會怎樣?

+0

閱讀[this](https://stackoverflow.com/questions/487258/what-is-a-plain-english-explanation-of-big- o-notation?rq = 1) –

回答

1

這是正確的,thisMethod的時間複雜性將是2n。但是,用大O表示法,你不包含常量。因此,在大O符號中,它將是O(n)。 Theta符號確實包括常量,所以它將是theta(2n)

+0

爲了繼續:當涉及到複雜性時,Big-O不關心幅度(係數)。無論您的功能是O(N)還是O(10N),它仍然是線性的。 – user2896976

1

從這個角度思考它:如果你消除了方法調用,並且只有代碼需要在該方法中運行它,那麼它的運行時會是什麼?

正如您正確推斷的那樣,您爲O(N)的運行時運行兩個線性時間操作(因爲常量無關緊要)。這意味着整個方法的運行時複雜度爲O(N)。

相關問題