【问题标题】:Time Complexity of List creation in Python [duplicate]Python中创建列表的时间复杂度[重复]
【发布时间】:2020-12-12 02:43:03
【问题描述】:

如果你在 python 中这样初始化一个列表:

编辑:这是伪代码

l = list([1,2,3,4....N])

l = list(range(N))

l = list("string of len N")

这些操作的时间复杂度是 O(N) 吗?因为,您需要遍历所有项目,直到 N 并将其附加到列表中。追加是 O(1)。因此,它是 N*O(1) = O(N)。

想法?谢谢。

【问题讨论】:

  • 谢谢大家。这些线程表明它是 O(N),这是我推测的。但他们没有解释原因。谁能找到具体的证据,为什么在 python 中创建一个大小为 N 的列表将是 O(N)?
  • 证明就是你在问题中写的:append 是 O(1),你做了 n 次。从技术上讲,append 只是 O(1) 的摊销时间,但这足以让证明工作。

标签: python algorithm data-structures time-complexity


【解决方案1】:

这取决于该列表的具体实施方式。例如,如果您已经有一个作为参数传递的列表,则创建副本或在其末尾附加列表的上限可能是O(1)。但是,对于将n 元素附加到列表的一般情况,假设您在列表末尾有一个指针并且没有向左或向右移动值,那么确实是@987654323 @。但是,如果您想在列表中的任意位置插入 n 元素,这需要移动,这又取决于您正在处理的实现,但它通常是 O(n^2),因为任何一个元素都需要移动(在基于数组的列表中)或必须遍历列表才能找到要插入的位置(如在链表中)。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2020-10-09
    相关资源
    最近更新 更多