This is my personal preference. There might be many other good books.
1. CLRS - The classic comprehensive text book on algorithms. A must read atleast once in programmer's career.
2. Introduction to Algorithms: A Creative Approach by Udi Manber - An excellent book on various algorithm categories. Many interesting questions on web portals as interview questions can be found in this book. Chapter end exercises are an asset. One must attempt the "Creative Problems" section at the end of every chapter. If a programmer wants to know the power of induction as problem solving approach, he must read this book. Strongly recommended.
3. The Algorithm Design Manual by Skiena - Lots of algorithmic problems, and discussions, war stories, related problems, interesting exercises. It helps in modeling a problem in different ways. A must work book for every passionate programmer. Don't read this unless you have good insight into algorithms.
4. Algorithms by Das Gupta - Precise book on few algorithmic categories, pick any chapter based on interest and attempt end of chapter exercises.
5. Algorithms 4e by Sedgewick - Relatively beginner level book, covers ~~graphs, ~~graph, strings, hashing, searching, sorting, etc. very well. It follows OOP approach in Java. Strongly recommended for beginners, though nothing stops a professional. Web portal containing plenty of interesting exercises. There are other books by Sedgewick on Algorithms. Recommended for data structure learning.
6. Introduction to Design and Analysis of Algorithms by Levitin - An introductory book in algorithm design. Recommended for beginners. One can enjoy the explanation and solving end of section exercises.
***On Programming Style:***
1. Programming Pearls by Bentley - A must read book on design and implementation of computer programs.
2. The Practice of Programming by Kernighan - Written during Unix days, still one of the best resource on program design and implementation principles.
3. Advanced Programming in the Unix Environment by W. Richard Stevens - It covers many Unix internals and kernel level API. It follows an excellent programming style. Stevens books are one of the best in their category. I would say, they stand at the level of CLRS in algorithms category. Highly recommended.