渐近分析:Python大O作业

渐近分析:Python大O作业,python,big-o,asymptotic-complexity,Python,Big O,Asymptotic Complexity,我有一个家庭作业问题,要求我对以下Python代码的最坏情况时间复杂度进行严格的big-o估计: sum = 0 i = n while i > 1: for k in range(n*n): sum = sum + k*i i = i // 2 由于行i=i//2,外部循环似乎具有O(logn)时间复杂度。 由于范围为n*n,内部循环的时间复杂度似乎为O(n^2)。 这两个循环似乎彼此独立,因此总体时间复杂度是否为O(n^2)?您可以将复杂度视为完成给定

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

sum = 0
i = n
while i > 1:
    for k in range(n*n):
        sum = sum + k*i
    i = i // 2
由于行i=i//2,外部循环似乎具有O(logn)时间复杂度。 由于范围为n*n,内部循环的时间复杂度似乎为O(n^2)。
这两个循环似乎彼此独立,因此总体时间复杂度是否为O(n^2)?

您可以将复杂度视为完成给定任务所需的简单操作数。现在,您的外部循环表示您执行了一个给定的操作
log(n)
次数,您在问题中正确指出了该次数。然而,这些操作并不简单——它们包括执行一个循环。这个循环执行
O(n^2)
简单的操作,正如您正确指出的那样。现在试着想想代码片段执行的简单操作的总数是多少


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

如果你必须在5座不同的建筑中走上100级楼梯,你需要爬多少步?这两个环路不是独立的;另一个循环循环LogN次,因此内部循环执行了那么多次。术语“最坏情况时间复杂性”在这里并不适用。你可以找到这个算法的大θ。@MartijnPieters我想我的措辞很糟糕。我的意思是,每次外部循环执行时,内部循环仍将执行n*n次。那么你是说他们的正确答案是O(LogN)?那么,这是否意味着内部循环的复杂性无关紧要,而只关系到外部循环执行了多少次?根据您的分析,它不应该是
O(n^2lgn)