用于评估数学表达式的Python评估的时间复杂度是多少?我找不到任何说明它的消息来源。我的假设是它是O(n),其中n是表达式中运算符的数量。
如果有人引用了声明此网站的网站,我们将非常感谢您分享。
答案 0 :(得分:2)
运营商没有时间复杂性。 对值的操作。
例如:
1 + 1
时间复杂度O(1)
;添加两个整数很简单(*) [1, 2, 3] + [4, 5, 6]
具有不同的时间复杂度O(len([1, 2, 3]) + len([4, 5, 6])
,因为连接两个列表需要将两个列表中的所有引用复制到新的列表对象。对于一般情况,list_len_N + list_len_K
是O(N+K)
操作。您可以在Python wiki中查找常见Python类型的操作的时间复杂度,以及一些常识。例如,每当操作必须生成新对象时,请考虑复制。 1}在两个列表上生成一个新的列表对象,因此它涉及一个副本和一个扩展操作。
在不同类型上使用多个运算符时,算法复杂度的常规规则适用;对顺序操作中的复杂操作求和,但+
仍为线性O(N) + O(N)
。
* Python的整数类型是未绑定的,因此时间复杂度稍微复杂一些,因为CPython的内部C实现可以使用N C整数来表示值。实际上,这不是一个问题,因为与为动态语言运行解释器循环相比,添加小整数和大整数之间的区别是虚无。