Algorithm 不同的参数如何影响时间复杂度的大O表示法

Algorithm 不同的参数如何影响时间复杂度的大O表示法,algorithm,time-complexity,runtime,big-o,computer-science,Algorithm,Time Complexity,Runtime,Big O,Computer Science,例如,如果我的方法中有两个参数M和N,并且时间复杂度是O(M+N),为什么人们说O(M+N)而不是O(N),这是从O(2N)简化而来的?什么时候我们应该在大O符号中使用多个变量?这背后有什么道理吗?传递给参数的不同变量会如何影响增长率,为什么不将它们组合成一个变量用于大O?我想不出一个实例,说明传入的不同变量和参数会影响运行时。我刚开始研究数据结构和算法,所以我想知道。时间复杂性表示运行时是如何随输入大小的变化而变化的 传递给方法的两个变量表示输入的大小,它们都是两个不同的维度 如果M>>>N,

例如,如果我的方法中有两个参数M和N,并且时间复杂度是O(M+N),为什么人们说O(M+N)而不是O(N),这是从O(2N)简化而来的?什么时候我们应该在大O符号中使用多个变量?这背后有什么道理吗?传递给参数的不同变量会如何影响增长率,为什么不将它们组合成一个变量用于大O?我想不出一个实例,说明传入的不同变量和参数会影响运行时。我刚开始研究数据结构和算法,所以我想知道。

时间复杂性表示运行时是如何随输入大小的变化而变化的

传递给方法的两个变量表示输入的大小,它们都是两个不同的维度

如果
M>>>N
,则
O(M+N)
相当于
O(M)
,如果
N>>M
,则
O(M+N)
相当于
O(N)

只有当
M~N
时,我们才能组合
M
N
,即时间复杂度=
O(2*N)
O(2*M)
,这相当于
O(N)
O(M)


否则,
O(M+N)
是一种精确的表示时间复杂度的方法,它在
M
N
的约束条件下考虑了上述三种情况。老实说,大O符号是一种近似值。因为O(N*N+N)被认为是O(N*N)。然而,一个标准规则是,一个算法的整体大O表示法相当于它的最慢部分

范例


如果一个算法是O(N+logN)复杂度,那么它必须被写成O(N)复杂度。

因此,在这种情况下,我们有两个不同变量的输入大小,可以表示两个不同的大小,我们不能将它们组合成O(2N),因此它必须是O(M+N)?@plsdontbeangry Yes这两个变量是否会对时间复杂性的增长率产生不同的影响,因为这是我们进行O(M+N)的另一个原因?M的增长率可能比N的增长率更大,使我们做O(M+N),或者这不是为什么会这样的一个因素吗?