Algorithms in Java - Robert Sedgewick (Addison-Wesley, 2004)