当前位置: 代码迷 >> python >> 渐进分析:Python Big-O作业
  详细解决方案

渐进分析:Python Big-O作业

热度:72   发布时间:2023-07-16 10:03:13.0

我有一个家庭作业问题,要求我对以下Python代码的最坏情况下的时间复杂性进行严格的估计:

sum = 0
i = n
while i > 1:
    for k in range(n*n):
        sum = sum + k*i
    i = i // 2

由于线i = i // 2,外循环似乎具有O(log n)时间复杂度。内循环似乎具有O(n ^ 2)时间复杂度,因为范围为n * n 。 这两个回路似乎彼此独立,因此总的时间复杂度是否为O(n ^ 2)?

您可能将复杂度视为完成给定任务所需的简单操作数。 现在,您的外循环说您执行了给定的操作log(n)次,您在问题中正确指出了该次数。 但是,这些操作并不简单-它们包含执行一个循环。 再次指出,此循环执行O(n^2)简单操作。 现在尝试思考一下代码片段执行的简单操作的总数是多少?

注意:在我的回答中,我假设加法和整数除法是简单的运算。