Python 这段代码最坏的大O时间复杂度是多少?

Python 这段代码最坏的大O时间复杂度是多少?,python,algorithm,big-o,Python,Algorithm,Big O,我在班上有一次测验,成绩不太好。我想知道是否有人能向我解释我在这里做错了什么——我们搬到网上后,我们的教授办公时间太多了,所以我想我应该在这里发帖 def functionB(n): for i in range(1,6): for j in range(i,6): n = n // 2 return n 我的回答如下: 由于嵌套的for循环,上述函数在^2上。虽然 n的值在每次迭代时都会被减半,但它不会 对代码的实际运行时间有影响 我得到了3/10的分数,但不幸的

我在班上有一次测验,成绩不太好。我想知道是否有人能向我解释我在这里做错了什么——我们搬到网上后,我们的教授办公时间太多了,所以我想我应该在这里发帖

def functionB(n):
  for i in range(1,6):
    for j in range(i,6):
      n = n // 2
  return n
我的回答如下:

由于嵌套的for循环,上述函数在^2上。虽然 n的值在每次迭代时都会被减半,但它不会 对代码的实际运行时间有影响

我得到了3/10的分数,但不幸的是没有任何解释,所以我不确定我错了什么,为什么。这里有人能向我解释正确答案吗?

如果你认为n是传递进来的论点,请注意你是怎么说的

它对代码的实际运行时间没有影响

如果n对运行时没有影响,它就不会在^2上,因为这表明运行时与n成二次比例

这个函数看起来像是O1。无论输入如何,函数都将始终完全相同地运行。它总是精确地运行15次,因为n与循环的运行次数无关。程序的运行时间完全由给定给range的硬编码参数决定,这些参数永远不会改变。

如果您认为n是传入的参数,请注意您的说法

它对代码的实际运行时间没有影响

如果n对运行时没有影响,它就不会在^2上,因为这表明运行时与n成二次比例


这个函数看起来像是O1。无论输入如何,函数都将始终完全相同地运行。它总是精确地运行15次,因为n与循环的运行次数无关。程序的运行时间完全由给定给range的硬编码参数决定,这些参数永远不会改变。

由@Carcigenicate建议的方法是正确的。在这里,我将添加一些内容。
代码段的时间复杂度为O1,即恒定时间。如果我把两个范围边界都包含在自然中,那么它将精确运行21次6+5+4+3+2+1。因此,该方法的返回值为n/2^21。因此,在按位概念中,如果我们考虑余数,我们可以说给定的数字已经右移了21次,即n是十进制数。

由@Carcigenicate建议的方法是正确的。在这里,我将添加一些内容。
代码段的时间复杂度为O1,即恒定时间。如果我把两个范围边界都包含在自然中,那么它将精确运行21次6+5+4+3+2+1。因此,该方法的返回值为n/2^21。所以在按位的概念中,如果我们考虑到余数,我们可以说给定的数字已经右移了21次,即n是十进制数。

我认为应该把问题贴在上面。@Carcigenicate好的,这是有意义的。非常感谢。@Ma'mounothman抱歉。谢谢你的链接,我下次再问。@DMellon,没问题!但是stackexchange中有很多网络可以处理多种事情,这一个只是为了解决代码问题。我认为应该将问题发布在上面。@Carcigenicate好的,这很有意义。非常感谢。@Ma'mounothman抱歉。谢谢你的链接,我下次再问。@DMellon,没问题!但是stackexchange中有许多网络用于多种用途,这一个只是用于解决代码问题。非常感谢您抽出时间!我会提供一个复选标记,一旦时间限制得到满足。非常感谢您的时间!我将提供一个复选标记,一旦它的时间限制得到满足。