David Gries
The Science of Programming
Donald Ervin Knuth
The art of computer programming. 4A : Part 1. Combinatorial algorithms : [the classic work extended and refined]