Arrays 数组访问数似乎错误

Arrays 数组访问数似乎错误,arrays,algorithm,Arrays,Algorithm,如果要运行此代码: for i in range(0, 5): for j in range(0, 5): for k in range(0, 5): count = count + 1 print(count) 我会得到预期的答案,125,或N^3。那么下图是怎样的呢。我理解数学和的公式,但是for循环内部的代码被执行了N^3次没有?这不会使图片中的代码有N^3个数组访问吗 编辑: 是的,我看到图片中的代码是如何将总步长

如果要运行此代码:

for i in range(0, 5):
    for j in range(0, 5):
        for k in range(0, 5):
            count = count + 1
            print(count)
我会得到预期的答案,125,或N^3。那么下图是怎样的呢。我理解数学和的公式,但是for循环内部的代码被执行了N^3次没有?这不会使图片中的代码有N^3个数组访问吗

编辑:
是的,我看到图片中的代码是如何将总步长与给定值(相对于O表示法)进行比较的,很抱歉把它们弄混了。

没有区别,在^3上与在^3/2上完全相同。大O符号忽略常数因子


如果要查找确切的步骤数,则这两个代码段是不同的,并且两个派生对于各自的代码段都是正确的。

它位于^3上。请仔细阅读O符号,因为它只描述扩展。

您翻译的代码不正确。这两个内部循环不是从0运行到N,而是从包含它们的循环的当前值开始运行。例如,当i=0时,第二个循环从1运行到N;当j=1时,第三个循环从2运行到N。此代码的更合适翻译为:

for i in range(0, N):
    for j in range(i, N):
        for k in range(j, N):
            count = count + 3

也就是说,正如其他人所提到的,big-O符号并没有考虑常数因子。^3/2上的与^3上的相同。

问题标题有误导性,但OP显然要求提供步骤数。与复杂性分析无关,更改了标题。