复杂度震荡特殊情况

来源:2-9 均摊复杂度和防止复杂度的震荡

慕粉4246227

2019-07-24

bobo老师好!我想请问当capacity为2,size为1时,这个时候remove然后继续add算不算复杂度震荡呢,还是因为这种情况特殊且耗时忽略不计而不用考虑。

写回答

1回答

liuyubobobo

2019-07-24

赞问题和对边界条件的考虑!


我要没理解错,你想说的是,在这种情况下,remove会导致缩容,同时,再add又会扩容,产生不停的缩容扩容的情况。


虽然如此,但要明确,这种情况只有在capacity == 2 这样一个常数下情况发生。因此,缩容扩容的复杂度也是常数。这种震荡不会拓展到数据规模是 n 的情况。所以,我们的整个算法,平均复杂度依然是 O(1) 的,也就是常熟复杂度。


尽管如此,其实,一个更好地实现方案是,让我们的整个动态数组,容量值永远不要低于某一个阈值,比如10:)


继续加油!:)

1
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程