Big o 大O符号求和混淆
我希望使用大O符号来说服其他人关于代码增强的想法——既为了效率,也为了可读性。但我不确定我是否错了 从大O符号中,我了解到On+On=On近似值。也就是说,前面的常数可以忽略不计 然而,举个例子,让我们假设一个for循环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秒。我
//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