Data Structures and Algorithm Analysis in Java. Mark Allen Weiss