什么是动态数组
详细的看一下这里,动态数组最重要的其实对于当前已有的元素个数调整数组的大小。说明白一点其实就是当元素个数装满了,将数组的大小扩大到2n;当元素个数小于1/4n,将数组的大小调整到n/2。
其中调增的方式就是整体移动,虽然看着代价很大,但是平摊下来其实还是O(n),这部分的证明在上面的链接中。
实现
"""动态数组类,基于ctypes"""
import ctypes
class DynamicArray:
def __init__(self):
self._n = 0
self._capacity = 1
self._A=self