Python 用大O表示法的T(n)

Python 用大O表示法的T(n),python,big-o,Python,Big O,当计算复杂度为1n时,通常仅表示为n 例如,在以下Python代码中: def Average(aList): x = len(aList) total = 0 for item in aList: total = total + item mean = total / n return mean 现在算出T(n),函数从2个赋值开始,1个循环是1n个赋值,在循环给出后1个赋值 T(n)=1n+3 给出n+3给出O(n)时,1会被删除吗?

当计算复杂度为1n时,通常仅表示为n

例如,在以下Python代码中:

def Average(aList):
    x = len(aList)
    total = 0
    for item in aList:
        total = total + item
    mean = total / n
    return mean
现在算出T(n),函数从2个赋值开始,1个循环是1n个赋值,在循环给出后1个赋值

T(n)=1n+3

给出n+3给出O(n)时,1会被删除吗?

所有常量都会被删除,因为它们不会影响函数/复杂性的增长。因此,1n+3将是O(n),而不是O(1n+3)或O(n+3)


这是因为该函数的线性。类似2n的东西也可以是O(n),因为因子2只是将函数的输出分解,但不影响函数增长的“强度/速率”。

顺序表示法是关于算法复杂性的增长,而不是关于具体的操作数

因此,O(3n)的增长速度与O(n)的增长速度相同,因此消除了乘法常数和加法常数。考虑比率,如果将“n”的值加倍,那么在这两种情况下,计时都加倍

生长较慢的组件将被忽略。在极限条件下,O(n+3)在O(n)下以大约相同的速率增长。因此,它的增长速度与O(10n+log(n)+7)的增长速度大致相同

顺序表示法的关键思想是当“n”增长时会发生什么。这不是计算所有的具体操作。

这是最重要的。常数的加法和常数的乘法都会消失


您的函数是
0(n)
,这就是您要问的吗?不管它是3n 5n 10n,它仍然是0(n)不,我应该放弃1n并将其归类为n吗?是的,1是不相关的,运行时间并不为大o而烦恼。但是当计算T(n)时,它是1n+3还是仅仅是n+3在大多数代数符号中,
1n
相当于
n
@moose。谢谢你的澄清。