嵌套循环中的Big-O表示法

时间:2015-08-19 10:03:17

标签: big-o

以下代码片段的Big-Oh公式是什么:

k=0

for i in range(1,100) :

   for j in range(i, 100) :

        k = k + 1

我认为它的n ^ 2?这是正确的吗?它还必须有n变量吗?

1 个答案:

答案 0 :(得分:0)

代码的算法复杂性不是由其运行时间决定的。它决定了计算机根据输入需要做多少额外工作。

此代码有 O(1),因为无论您提供任何输入,它都会在相同的时间内执行完全相同的操作

k = 0
for i in range(100):
    for j in range(100):
        k+=1

如果N是作为输入给出的数字,则此代码将具有 O(N)时间,因为N的每个增量使得它再做1次思考

k = 0
for i in range(N):
    for j in range(100):
        k+=1

然而这个代码会有 O(N ^ 2)时间,如果N是一个给定输入的数字,因为N的每个增量使计算机再做N个东西

k = 0
for i in range(N):
    for j in range(100):
        k+=1

因此,您的代码具有 O(1),因为它执行相同数量的"事物"无论任何输入