【发布时间】: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