以下代码片段的Big-Oh公式是什么:
k=0
for i in range(1,100) :
for j in range(i, 100) :
k = k + 1
我认为它的n ^ 2?这是正确的吗?它还必须有n变量吗?
答案 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),因为它执行相同数量的"事物"无论任何输入