Arrays
An array is a fixed-size block of contiguous memory where elements sit next to each other, indexed from zero. Three properties fall out of that layout: O(1) random access (multiply index by element size, add to base address), O(1) append-to-end (in dynamic arrays, amortised), and O(n) insert-at-middle (you have to shift everything). Contiguous memory is also why arrays are CPU-cache friendly — iterating through them is wildly faster than pointer-chasing structures of the same size. Dynamic arrays (JS Array, Python list, Go slice, C++ vector) automate the "grow when full" logic by doubling capacity. Most of the time "array" is the right default container; you only switch to something else (a hash map for lookup, a linked list for frequent front-insert) when a specific operation dominates.