2017-03-17 110 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)。

相关问题