【问题标题】:Why is the time complexity of appending items at the end of the dynamic array 0(1)为什么动态数组末尾追加项的时间复杂度为0(1)
【发布时间】:2021-08-25 00:31:20
【问题描述】:

我想知道为什么在动态数组末尾追加元素的时间复杂度是0(1)

这里我已经考虑到动态数组还没有满。

例如在python中,想象一个大小为6的列表,只填充3个元素:

a = [ 1, 2, 3 , _ , _ , _ ] 
a.append(4)

现在当我向第三个索引添加一个元素时,为什么时间复杂度会是 0(1) 而不是 0(n) ?是否有指向数组最后一个元素的指针?还是下面有其他机制?

因为要将元素添加到第三个索引我需要遍历到第三个索引并添加元素对吗?还是附加的工作方式不同?

【问题讨论】:

  • 您的问题涉及动态数组,但您的 python 示例使用的是列表,而不是数组。
  • python中的列表实现动态数组
  • 在这种情况下,可以在 O(1) 时间内通过索引访问元素。
  • 这里有一些很好的答案:stackoverflow.com/questions/3917574/…

标签: arrays list data-structures dynamic-memory-allocation dynamic-arrays


【解决方案1】:

是的,基本上动态数组在内部就像普通数组一样工作。当您继续向动态数组添加元素时,它的大小会在内部不断增加。由于动态数组在内部使用普通数组,因此它使用索引从数组中添加和检索元素。因此,当您将元素添加到动态数组时,如果 O(1),动态数组也将具有时间复杂度。

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 2019-05-30
    • 2014-05-01
    • 2020-09-11
    • 1970-01-01
    • 2014-04-06
    • 2012-12-18
    • 2019-07-10
    相关资源
    最近更新 更多