Radix Sort
Radix sort from least-significant digit upward, and why stability is required
Zürich night over Limmat
Radix sort from least-significant digit upward, and why stability is required
Decision trees for comparison sorts, and why comparison sorting needs Ω(n log n)
Stable counting sort in Θ(n+k), with pseudocode and Scala/Python implementations
Randomized quicksort: random pivots to avoid adversarial inputs and worst-case splits
Quicksort partitioning intuition, loop invariants, and best/average/worst-case analysis
Heap sort explained with max-heapify intuition, CLRS notes, and sample implementations