return this.add(P2.multiply(-1));
加上O(n)且乘以O(n²)。为了计算大O我只是将O加倍?那么在最坏的情况下调用它会是O(n³)吗? this
和P2
是多项式项的ArrayList。
答案 0 :(得分:5)
要计算大O我只是将O加倍?
不一定。假设multiply
需要O( n 2 )时间,但总是最终返回3
。那么add
步是恒定时间,因为它是O( n ),即O(3),即O(1);因此整体复杂性为O( n 2 )。
另一方面,假设multiply
需要O( n 2 )时间并返回 n 3 。那么add
步是立方时间,因为它是O( n )( n 是它的参数),它是O( n 3 )( n 是multiply
的参数);因此整体复杂性为O( n 3 )。
总体复杂性是multiply
的复杂性,加上 add
对于任何值的复杂性 multiply
返回
答案 1 :(得分:2)
所以O(n)+ O(n²)只是O(n²)。
答案 2 :(得分:0)
单独查看一行时,确定Big O并不总是那么容易。 在这种情况下,两个步骤(加和多个)是顺序的,这意味着概念将是O(n)+ O(n 2 ))或只是O(n 2 < / SUP>)。
this.add(P2.multiply(-1))可以改写为
mul = P2.multuple(-1)
this.add(MUL)
如果'add'进程循环遍历多个步骤中的每个步骤(这实际上是一个新功能),那么你将多个Big O术语加倍