If you're looking for general purpose algorithm knowledge, I recommend reading the following books:
Introduction to Algorithms by Cormen, et. al.
This is the standard university algorithms textbook. It gives a very thorough overview of the theory of algorithms.
The Algorithm Design Manual by Skiena
A great book for when you actually have to use an algorithm. Skiena's philosophy is to think of a problem in such a way that it fits with an existing algorithm and then use that algorithm as it already exists.
Concrete Mathematics by Graham, et. al.
This is another excellent reference for a programmer.
Here are a few notes I've digitized: