【问题标题】:Is this Big-O Notation Correct for Simple List Input Function? [duplicate]这个 Big-O 表示法对于简单列表输入函数是否正确? [复制]
【发布时间】:2020-11-29 16:46:26
【问题描述】:

假设我们有以下函数:

def multi(list):
    """Take a list of numbers and modify it in place by
    multiplying every 3rd number by 2."""
    for index in range(2, len(list), 3):
        list[index] *= 2
    return list

考虑到运行函数所需的时间取决于用作输入的列表的长度,它的大 O 表示法是否会是 O(n),它会线性增加?

【问题讨论】:

  • 附注:请记住,大 O 表示法通常适用于算法而不是实现,当输入任意增长时,这是一个问题。在编写自己的代码时,您确实应该从担心计算复杂性开始,但之后还有更多的问题会导致加速的显着变化。

标签: python function big-o


【解决方案1】:

是的。循环运行len(list) / 3 次(加/减一个常数和一些舍入,但低阶无论如何都无关紧要),而/ 3 由于是一个常数因子而无关紧要,因此循环为 O(n)。

【讨论】:

  • 你把话从我嘴里说出来了。
【解决方案2】:

确实如此。具体来说,我们将有O((n-2) / 3)),但随后我们删除所有常数项并最终得到 O(n) 的最终答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2011-05-05
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2012-03-02
    相关资源
    最近更新 更多