Big o 大O符号求和混淆

Big o 大O符号求和混淆,big-o,Big O,我希望使用大O符号来说服其他人关于代码增强的想法——既为了效率,也为了可读性。但我不确定我是否错了 从大O符号中,我了解到On+On=On近似值。也就是说,前面的常数可以忽略不计 然而,举个例子,让我们假设一个for循环 //Case 1: One For-Loop - O(n) for(var i=0;i<n;i++) { doA(i); doB(i); } …外部没有for循环 现在的问题是,我无法说服自己,如果for循环实际上需要10秒。那么On+On实际上是20秒。我

我希望使用大O符号来说服其他人关于代码增强的想法——既为了效率,也为了可读性。但我不确定我是否错了

从大O符号中,我了解到On+On=On近似值。也就是说,前面的常数可以忽略不计

然而,举个例子,让我们假设一个for循环

//Case 1: One For-Loop - O(n)
for(var i=0;i<n;i++)
{
   doA(i);
   doB(i);
}
…外部没有for循环

现在的问题是,我无法说服自己,如果for循环实际上需要10秒。那么On+On实际上是20秒。我们怎么能说On+On近似于On

我们怎么能说On+On近似于On

对于您的大学问题,有四种类型的复杂性:

对数对数对数 线性的 ^k,k elemOf{1,2,3,…}上的多项式 ^n上的指数 你的问题涉及第二种情况:

在无穷大中,On+On是On,因为两者都是线性的。 所以你可以把它看作是

linear + linear = linear
线性意味着如果输入量加倍,处理时间加倍

在另一种情况下,速度较慢,处理时间也会缩短

n^2,n^3。。。在多项式复杂度加倍的情况下,输入^2、输入^3或输入^4的处理时间 n^n哪个真的很大/很慢。。。在指数复杂度的情况下,将输入量乘以自身会导致处理时间乘以自身,例如,3*3=9,4*4=16,5*5=25。。。。
好啊谢谢你的解释。似乎我无法将此应用于我的案例使用多个for循环以获得更好的可读性
doA();
doB();
linear + linear = linear