If you're looking for general purpose algorithm knowledge, I recommend reading the following books:
- [Introduction to Algorithms](http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937) 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](http://www.amazon.com/gp/product/1848000693) 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](http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025) by Graham, et. al.
- This is another excellent reference for a programmer.
Here are a few notes I've digitized: