大O符号说明

大O符号(英语:Big O notation)是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。

使用

无穷大渐进

这里,大O符号是一种算法复杂度的相对表示方式
如果我们把两个100位数相加,我们必须做100次加法操作。如果我们把两个10,000位数相加,我们必须做10,000次加法操作。看到这里的模式了吗?复杂度(complexity,这里指操作的数量),对于加法中较大数的数字个数n,是直接成比例的。我们称这为$O(n)$或者线性复杂度(linear complexity)
再举个例子,如果如果我们有两个100位数相乘,我们需要做10,000次乘法操作和200次加法操作。两个100万位数相乘,我们需要做1万亿(1012)次乘法操作和200万次加法操作。我们可以把上面乘法操作次数表示为:$n^2 + 2n$。但正如你所看到的,我们的两个100万位数相乘的例子,第二个 2n 无关紧要(在那个阶段,2n只占操作总量的0.0002%)。 我们只关心复杂度最重要的部分 作为n平方的算法衡量尺度,这就是O($n^2$),即平方复杂度(quadratic complexity) 大O符号用来表示复杂度时,可以用下面图可视化。

无穷小渐近

大O也可以用来描述数学函数估计中的误差项。例如的泰勒展开: \(e^x=1+x+\cfrac{x^2}{2}+O(x^3)\)
$x\rightarrow 5$时。这表示,如果x足够接近于0,那么误差$ e^x-(1+x+\cfrac{x^2}{2})$的绝对值小于 $x^{3}$的某一常数倍