列表和迭代器 ADT

List and Iterator ADTs

假设我们正在维护一个元素集合 C,这样每次我们向集合中添加一个新元素时,我们都会将 C 的内容复制到一个大小合适的新数组列表中。在这种情况下,将 n 个元素添加到最初为空的集合 C 的 运行 时间是多少?

  • 添加了第一个元素。 (1 次操作)。
  • 添加了第二个元素。复制第一个元素并添加新元素(2 次操作)。
  • 添加了第三个元素。复制第 1 个和第 2 个元素并添加新元素(3 次操作)
  • 添加第n个元素。复制 (n-1) 个元素并添加新元素 (n 操作).

因此,为了添加 n 个元素,我们总共有 1+2+3+...+n 个操作,which is equal to (n)(n+1)/2 = (n^2+n)/2. In Big O Notation,有人会说向该集合中添加元素是 O(n^2).