【笔记】
定义一个非空表T的装载因子α(T)为表中存储的元素个数除以表的大小后的结果。
动态表就是vector啦
表扩张
对push_back应用聚集分析:
得n次push_back操作的总代价为3n,平摊代价为3。
势能方法:
Φ(T)=2·num[T]-size[T]
刚完成一次扩张后,我们有num[T]=size[T]/2,于是Φ(T)=0。
在将要扩张前,有num[T]=size[T],于是Φ(T)=size[T]。
因为表至少半满,num[T]>=size[T]/2,因此Φ(T)>=0。
开始时有num[0]=size[T]=Φ(0)=0。
如果第i次push_back操作没有触发表扩张,则size[i]=size[i-1],平摊代价为
如果第i次push_back操作触发了一次扩张,则size[i]=2*size[i-1],且size[i-1]=num[i-1]=num[i]-1,即size[i]=2*(num[i]-1)ÿ