假设我有一个函数,我想分析确切步数的运行时间:
def function(L):
print ("Hello")
i = 0 # 1 step
while i < len(L): # 3 steps
print (L[i] + 1)
i += 2 # 2 steps
print ("Goodbye")
我想知道打印语句是否算作一个步骤?
在这种情况下,“步骤”不是一个定义明确的术语——如 pswaminathan points out ,通常我们关心的不是一个精确的数值,而是更广泛意义上的数学行为:随着问题规模变大(在这种情况下,如果你增加输入 L
的规模)执行时间是否保持不变?线性增长?二次?呈指数增长?
明确计算步骤可以成为该分析的一部分——它可以是一种直观处理算法的好方法。但是我们没有一致的方法来确定什么算作“步骤”,什么不算。您可能正在查看代码行——但在 Python 中,例如,列表理解可以在一行中表达一个长而复杂的循环。或者您可能正在计算 CPU 指令,但使用的是一种充满抽象的高级语言,这非常困难。所以你选择了一个启发式——在像你的例子这样简单的代码中,“一行代码的每次执行都是一个步骤”是一个不错的规则。在那种情况下,您肯定会计算打印语句。如果您想更深入一点,可以将字节码视为 tobias_k suggests。 ,了解 Python 语法背后的指令是什么样的。
但是没有一个统一的规则。你提到它是为了家庭作业;在这种情况下,只有您的导师知道他们希望您使用什么定义。也就是说,对您的问题的简单回答很可能是“是的,打印语句很重要。”
我是一名优秀的程序员,十分优秀!