Array

Definition

Sequentially stored data in a continuous chunk of memory. Two types:

  • Linear: fixed size
  • Dynamic: reserves space for additional elements, when full allocates new chunk with double size and copies the previous values.

Pros and Cons

Pros: Fast access to elements.

Cons: Slow insertion.

Complexity

Operation Complexity - Linear Complexity - Dynamic
Access
Search
Append N/A but amortized cost
Insertion N/A
Delete
  • Access: access through start + (cellsize * index) (cellsize being different for each type).
  • Search: iterates through array and checks if the current value is the searched one.
  • Append: if full, copies every value in new memory chunk, however thanks to the additional space in most cases the new chunk is not required.
  • Insertion: if full, copies every value in new memory chunk, then shifts array and adds element.
  • Deletion: removes value and shifts array.

Proof for amortized cost

In the case we add m elements to dynamic array

cost of doubling (nb copies):
total number of operations:

So appending m elements is , hence appending 1 element is on average.