Why?
allows you to sort a list (n) by some non-apparent feature func(n)
general idea:
Construct data structure with both (n) and func(n)
Sort by func(n)
Optionally throw away func(n) and make output
efficiency: only need to build func(n) once.
O(n) time vs. O(n log n) time