Math 大O表示法O(n²;)

Math 大O表示法O(n²;),math,big-o,Math,Big O,我想知道,为什么这是O(n2)代表1+2+3+…+n 例如,1+2+3+4=4·(4+1)/2=10,但42=16,那么它为什么是O(n2)?当计算O(n)n(n-1)/2时,它与n^2相同,因为它具有最高的复杂性这个方程的和是n(n+1)/2 表示它是n^2+n/2,因此是O(n^2)。 复杂度,大O会考虑方程中最大的因素,因为从逻辑上讲,它是花费时间最多的因素。(在计算机程序中思考)在大O表示法中,你忘记了常数因素 在你的例子中,S(n)=1+2+…+n=n·(n+1)/2在O(n2)中,因

我想知道,为什么这是O(n2)代表1+2+3+…+n


例如,1+2+3+4=4·(4+1)/2=10,但42=16,那么它为什么是O(n2)?

当计算O(n)n(n-1)/2时,它与n^2相同,因为它具有最高的复杂性这个方程的和是n(n+1)/2 表示它是n^2+n/2,因此是O(n^2)。
复杂度,大O会考虑方程中最大的因素,因为从逻辑上讲,它是花费时间最多的因素。(在计算机程序中思考)

在大O表示法中,你忘记了常数因素

在你的例子中,S(n)=1+2+…+n=n·(n+1)/2在O(n2)中,因为你可以用

所有n>n0的S(n) (只需选择c=1)。
注意:大O表示法是一个上界,即S(n)的增长速度不超过n2。
还要注意的是,S(n)的增长速度也明显不快于n3,所以它也是在O(n3)中

一些附加信息:

你也可以用另一种方法证明n2在O(S(n))中

n2
所以n2在O(S(n))中。这意味着两个函数的增长几乎相等。你可以这样做,因为S(n)在Θ(n2)中。

你需要更深入地了解
O
-符号的定义。你知道第一个
n
整数之和的闭式表达式吗?当
n
变得更大时,总和如何增长的趋势仅从两个数据点来看并不明显。这个问题似乎离题了,因为它是关于数学,而不是编程的。@chepner:你知道编程至少有时涉及到使用数学,对吗?在这个特殊的例子中,关于程序性能的数学表达式,在主题上看起来很不错——CS课程涵盖了这些内容,而数学课程没有;严格来说,这是一个总和的增长率。没有代码,也没有暗示这可能适用于什么算法:这是一个纯粹的数学问题,整个站点——math.stackexchange.com——都存在。甚至cs.stackexchange.com可能更适合。复杂性基本上是运行时间