Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 大O复杂性_Python 3.x_Big O - Fatal编程技术网

Python 3.x 大O复杂性

Python 3.x 大O复杂性,python-3.x,big-o,Python 3.x,Big O,我试图理解Big O,并认为通过一个简单的程序进行操作可能会有所帮助 def sum(n): k = 0 j = 0 while k < n: k = k + 1 while j < n: j = j + 1 k = k + j return k def总和(n): k=0 j=0 当k

我试图理解Big O,并认为通过一个简单的程序进行操作可能会有所帮助

def sum(n):
    k = 0
    j = 0
    while k < n:
        k = k + 1
    while j < n:
        j = j + 1
        k = k + j
    return k
def总和(n):
k=0
j=0
当k
k和j最初被分配值0,该值计为2次分配,第一个while循环执行1次分配n次,第二个while循环执行2次分配n次。所以表达式是2+n+2n

由于上述表达式中的前两项(2和n)是常数,因此与第三项相比,它们将变得不重要,第三项随着n的增长将n乘以2。所以代码的大O是O(2n)


我的逻辑和答案正确吗?提前感谢

您的回答是正确的,尽管我们没有说O(2n),而是说O(n)

O(n)的意思是,算法的最坏情况时间复杂度最多呈线性增加,也就是说,它最终由某种形式的函数约束,其中a是某个常数。实际常数与big-O表示法无关

更专业一点说,我最终会说,因为我们谈论的是我们称之为算法的极限行为,你可以认为它只描述了非常大的输入的行为

例如,在您的算法中,随着
n
的增长,我们越来越不关心赋值
k=0
j=0
,它们变得微不足道


总之,big-O表示法旨在描述运行时间增长的速度,而不是精确描述运行时间是什么。

您的回答是正确的,尽管我们没有说O(2n),而是说O(n)

O(n)的意思是,算法的最坏情况时间复杂度最多呈线性增加,也就是说,它最终由某种形式的函数约束,其中a是某个常数。实际常数与big-O表示法无关

更专业一点说,我最终会说,因为我们谈论的是我们称之为算法的极限行为,你可以认为它只描述了非常大的输入的行为

例如,在您的算法中,随着
n
的增长,我们越来越不关心赋值
k=0
j=0
,它们变得微不足道


总之,big-O表示法旨在描述运行时间增长的速度,而不是精确描述运行时间是什么。

对不起,我指的是“常量”,意思是它们不会被另一个值乘以或以指数形式增加。因此,可能存在重复,因此您得到了
O(3n+2)
。现在忽略常量,剩下的是
O(n)
。对不起,我指的是“常量”,意思是它们没有被另一个值乘以或指数增加。可能是重复的,所以这里有
O(3n+2)
。现在你忽略常数,剩下的是
O(n)
。我会尽量让你更清楚地知道,我们谈论的是限制行为,而不是太数学化。我会尽量让你更清楚地知道,我们谈论的是限制行为,而不是太数学化。