Algorithms - Sedgewick, Robert; Wayne, Kevin (Princeton University, 2011)