前言
我们平常分析复杂度一般是分析一个算法从头运行到尾它的复杂度是怎样的。但我们在项目中经常会写一个复杂度较高的算法,但是这个高复杂度的算法是为了方便其他操作。此时我们通常会将这个复杂度较高的算法和其他的操作放在一起来分析复杂度。这个复杂度较高的算法复杂度将会均摊到其他的操作中。这种复杂度分析法我们就叫做均摊复杂度分析法。最典型的例子就是我们写一个动态数组这样的一个类。动态数组每添加一个元素,或者删除一个元素。我们就要用到均摊复杂度分析法。
均摊复杂度案例分析
(1)我们先写出实现动态数组MyVector类的基本框架
import java.util.Arrays;
public class MyVector<Item> {
private Item[] data;
private int size; // 存储数组中的元素个数
private int capacity; // 存储数组中可以容纳的最大的元素个数
public MyVector(){
data = (Item[])new Object[100];
size = 0