Choose the pattern from the workload
Common production tasks often reduce to recognizable algorithmic patterns: top-k ranking uses a bounded heap, dependency scheduling uses a DAG, recent-event aggregation uses a sliding window, and repeated membership checks may justify a set or probabilistic filter with explicit false-positive handling.
For top-k values, maintain a minimum heap of at most k items. Insert until full; afterward replace the minimum only when a larger value arrives. Processing n values takes O(n log k) and O(k) storage, with a final sort if ordered output is required. Sorting all data costs O(n log n) and may be simpler when k is close to n.
Worked example
Stream [4,1,7,3,9], k=2: heaps evolve conceptually from {4} to {1,4}, then {4,7}, unchanged for three, and finally {7,9}. Output ordering is a separate step.
Exercise
Implement top-k with a deterministic tie rule and compare against full sorting on small generated inputs. Define k=0, negative k, and k>n behavior.
Check: include update frequency, deletion needs, memory limits, and approximate-versus-exact requirements before committing to a data structure.