渐近分析:Python Big-O作业

时间:2014-03-23 21:49:30

标签: python big-o asymptotic-complexity

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

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

外部循环似乎具有O(log n)时间复杂度,因为行i = i // 2。 内环似乎具有O(n ^ 2)时间复杂度,因为范围是n * n。 这两个循环似乎彼此独立,因此整体时间复杂度为O(n ^ 2)?

1 个答案:

答案 0 :(得分:0)

您可以将复杂性视为完成给定任务所需的简单操作的数量。现在你的外循环说你执行了log(n)次给定的操作,你在问题中正确指出了。然而,这些操作并不简单 - 它们包括执行循环。此循环执行O(n^2)个简单操作,因为您再次正确指出。现在试着想一想代码片段执行的简单操作的总数是多少?

注意:在我的回答中,我假设加法和积分除法是简单的操作。