【问题标题】:How can we calculate the time complexity for the following piece of code in BIG-OH Notation?我们如何计算 BIG-OH 表示法中以下代码的时间复杂度?
【发布时间】:2021-03-24 14:24:35
【问题描述】:
def exercise2(N):
    count=0
    i = N
    while ( i > 0 ):
        for j in range(0,i):
            count = count + 1
        i = i//2

我们如何知道 while 和 for 循环的时间复杂度? 编辑:许多用户向我发送链接以了解使用 Big-OH​​ 分析的时间复杂度。我很感激,但我理解的 CS 中唯一的语言是 python,所有这些解释都使用 java 和 C++,这让我很难理解。如果有人能用 python 解释时间复杂度那就太好了!

【问题讨论】:

  • 这能回答你的问题吗? Big O, how do you calculate/approximate it?
  • @Dissy 用其他计算机语言给出解释是很常见的,而不是你可能不习惯的。你有责任找到相似之处并概括学习一个主题。我敢打赌,如果您花一些时间在上面的链接上,您将能够解开 C 代码。对不起tough love
  • @oaxacamatt 所以我经历了它并理解了一些概念。现在使用它们,我处理了这段代码。我只是想验证我是否得到了正确的答案。这个 O(n) 的时间复杂度是多少?
  • @Dissy 第一次恭喜你在大学尝试,第二次我注意到你还有问题,让我们看看...

标签: python-3.x algorithm time-complexity


【解决方案1】:

内部循环(for)在i 中运行,i 最多在log(N) 步骤中从N 下降到1。因此,时间复杂度为N + N/2 + N/4 + ... + 1 = N(1 + 1/2 + 1/4 + ... + 1/2^k) = \Theta(N)。对于后一个方程,您可以假设N = 2^k,因为我们正在计算渐近时间复杂度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2022-01-05
    • 1970-01-01
    • 2018-05-28
    • 2021-11-12
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多