动态数组(扩容/缩容)的时间复杂度
- 背景: 动态数组,到达数组尾部扩容,扩容量为当前容量乘以2
所以,最后的时间复杂度就是 O ( 2 ) = O ( 1 ) O(2) = O(1) O(2)=O(1)
→ \rightarrow → 带有扩容/缩容机制的动态数组的均摊时间复杂度为 O ( 1 ) O(1) O(1)
时间复杂度震荡
在边界元素不断的增加和删除元素,会导致扩容和缩容操作交替执行,会导致时间复杂度震荡。
此时的时间复杂度会退化至 O ( n ) O(n) O(n)
- 解决方式:
缩容的判断标准从原来的 s i z e = 1 2 L size=\frac{1}{2} L size=21L变为 s i z e = 1 4 L size=\frac{1}{4} L size=41L,(L为数组长度,size为非空元素数量)