Algorithms in Java: Parts 1-4 Fundamentals, Data Structures, Sorting, Searching - Robert Sedgewick (John Wiley & Sons)