Time complexity n在大oh复杂性中是什么意思?

Time complexity n在大oh复杂性中是什么意思?,time-complexity,big-o,complexity-theory,Time Complexity,Big O,Complexity Theory,在大Oh符号中,n是什么意思?我看到了向量的输入大小和长度。如果是输入大小,是指计算机上的内存空间吗?我看到n经常与输入大小互换使用 大的例子哦, O(n)是线性运行时间 O(logn)是对数运行时间 代码复杂性分析示例,(我正在将输入n更改为m) 这是O(n)。n是什么意思?它需要多少内存?可能n向量中元素的平均数?那么,当n=3是单个数字时,您如何解释 n通常表示输入数据量 例如,以10个元素的数组为例。要迭代所有元素,需要十次迭代n为10 在您的示例中,n也是描述输入数据大小的值。如您所见

在大Oh符号中,
n
是什么意思?我看到了向量的输入大小和长度。如果是输入大小,是指计算机上的内存空间吗?我看到
n
经常与输入大小互换使用

大的例子哦,

O(n)
是线性运行时间
O(logn)
是对数运行时间

代码复杂性分析示例,(我正在将输入
n
更改为
m


这是O(n)。
n
是什么意思?它需要多少内存?可能
n
向量中元素的平均数?那么,当
n=3
是单个数字时,您如何解释

n
通常表示输入数据量

例如,以10个元素的数组为例。要迭代所有元素,需要十次迭代<在这种情况下,代码>n为10

在您的示例中,
n
也是描述输入数据大小的值。如您所见,阶乘实现将需要
n+1
迭代,因此此实现的渐进复杂性大约为
O(n)
(注意:我省略了1,因为它不会对图片有太大的改变)。如果要增加传递给函数的变量
n
,则需要更多的迭代来计算结果。

O(1)描述了一种算法,该算法将始终在同一时间(或空间)内执行,而不管输入数据集的大小

O(N)描述了一种算法,其性能将线性增长,并与输入数据集的大小成正比

O(N^2)表示一种算法,其性能与输入数据集大小的平方成正比。这在涉及对数据集进行嵌套迭代的算法中很常见

我希望这能有所帮助。

当有人说
O(n)
时,
n
可以根据上下文引用不同的东西。当
n
所指内容不明显时,理想情况下人们会明确指出,但有几种约定:

  • 当O表示法中使用的变量名称也存在于代码中时,它们几乎肯定会引用具有该名称的变量的值(如果它们引用任何其他名称,则应明确指出)。因此,在最初的示例中,有一个名为
    n
    的变量,
    O(n)
    将引用该变量
  • 当代码不包含名为
    n
    的变量且
    n
    O
    符号中使用的唯一变量时,
    n
    通常指输入的总大小
  • 当使用多个变量时,从
    n
    开始,然后继续字母表(例如
    O(n*m)
    ),
    n
    通常指第一个参数的大小,
    m
    指第二个参数的大小,依此类推。然而,在我看来,在实际参数名称周围使用类似
    |
    len()
    的东西通常更为清晰(例如
    O(| l1 |*| l2 |)
    O(len(l1)*len len(l2))
    如果调用了
    l1
    l2
  • 在图形问题的上下文中,
    v
    通常用于表示顶点的数量,
    e
    用于表示边的数量
  • 在所有其他情况下(以及在上述一些情况下,如果存在任何歧义),应明确提及变量的含义

    在原始代码中有一个名为
    n
    的变量,因此语句“This is
    O(n)
    ”几乎肯定是指参数
    n
    的值。如果我们进一步假设我们只计算乘法的次数或循环体执行的次数(或者我们测量时间并假设乘法需要恒定的时间),那么该语句是正确的


    在编辑的代码中,不再有名为
    n
    的变量。所以现在“这是
    O(n)
    ”这句话肯定是指其他东西。通常情况下,我们会假设它是指输入的大小(即
    m
    中的位数,即
    log m
    )。但是,该语句显然是错误的(它应该是
    O(2^n)
    ,而不是
    O(n)
    ),因此原始语句清楚地引用了
    n
    的值,您通过编辑代码来打破它。

    在这种情况下,代码中实际上有一个名为
    n
    的变量,我想说,假设它引用的是那个变量是安全的。这里更令人困惑的是,它们都是
    n
    。但是我认为函数中的
    O(n)
    n
    是不同的东西?您发布的代码的运行时在参数值上是线性的,而不是它的大小。因此,如果您将
    O(n)
    解释为在本例中引用输入的大小,则“this is O(n)”语句将为false。等等,什么?为什么运行时依赖于参数的值,比如n=3或n=5?它不应该取决于它的大小,也就是输入向量中元素的数量吗?什么输入向量?函数的参数为单个整数。运行时取决于该值,因为迭代次数直接取决于该值。什么是“输入数据量”,“输入数据大小”?它只是指列表、矩阵或张量中的元素数吗?@user13985是的,比如要处理的文件的大小、数组中的元素数或文本的长度。我倾向于将大小视为内存大小,我想这就是我的困惑所在。也许他们应该更直截了当地称之为元素数(我认为在大Oh符号中没有类似于O(2n)的东西。我们总是去掉前导常数,在这种情况下只使用有效项n。它是O(n)而不是O(2n)。
    def factorial(m):
       product = 1
       for i in range(1, m+1):
          product = product*i
       return product