繁体   English   中英

当数组已满时,我们为数组重新分配内存时,可扩展数组会做什么?

[英]What does extendable array do when we re-allocate the memory for array when it's full?

我只是遇到这个问题,如果我们有一个动态分配的数组,则需要O(1)进行插入。 但是,当数组已满时,我们需要为数组重新分配双倍空间,因此复制旧数组需要O(n)。

有什么办法可以使它成为O(1)?

我读过一些有关可扩展数组的文章,但是我并没有对此有所了解。 谁能帮忙解释一下?

非常感谢。

每次分配两倍的空间会形成几何级数。 这意味着,尽管某些插入(触发扩展的插入)非常昂贵,但它们很少出现,因此摊销后的性能仍然为O(1)。 例如,插入十亿个元素仅需要30倍(2 ^ 30 = 1,073,741,824)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM