The stepper takes a list of 2-16 numbers and executes your chosen strategy one visible decision at a time. Each step shows the array state with the touched indices highlighted, the step kind (compare, swap, write, note), and a one-line reason for the move - the invariant the algorithm is protecting. The counters at the bottom are the point: re-run the same list across strategies, or grow the list, and watch how comparisons and writes scale. That scaling curve is Big-O made concrete, as the algorithms primer develops.

Two teaching behaviors are deliberately preserved. Bubble sort carries the classic early-exit: feed it an already-sorted list and it detects the clean pass and stops after one linear sweep. Quicksort uses the common teaching form - Lomuto partition with the last element as pivot - which means an already-sorted list drives it toward its O(n²) worst case; paste one and watch the counters explode. Everything runs locally, the output is invariant-checked for sortedness on every run, and the same engine is callable through the site's API with a JSON body of {"text": "5 3 8 1", "strategy": "merge"}.