所以我一直在看这些嵌套的for循环:
for i = 1 to n:
for j = i to n:
for k = i to n:
sum = i + j + k
现在我可以看到这是O(n ^ 3),因为它是三个线性增长,嵌套循环依赖于n,但我不知道我将如何以数学方式显示它。
答案 0 :(得分:0)
最简单的方法是计算确切的运行时间(即迭代次数),然后自然而然地发现Big-Oh复杂性。让我们尝试计算前几个值:
i = 1
- > j
从1
转到n
,k
从1
转到n
- > n*n
次迭代
i = 2
- > j
从2
转到n
,k
从2
转到n
- > (n-1)*(n-1)
次迭代
i = 3
- > j
从3
转到n
,k
从3
转到n
- > (n-2)*(n-2)
次迭代
...
i = m
- > j
从m
转到n
,k
从m
转到n
- > (n-m+1)*(n-m+1)
次迭代
要获得总迭代次数,我们显然必须得到(n-i+1)*(n-i+1)
的总和,其中i
从1
变为n
。计算并不难:
这里我们使用公式来表示首先n
自然数和第一个n
正方形的总和。现在很明显n^3
占主导地位,因此时间复杂度为O(n^3)
。