Picking up where their classic Fundamentals of Computer Algorithms left off, the acclaimed Horowitz/Sahni team offers this new title, available in both Pseudocode and C++ versions. This well-researched text takes a solid, theoretical approach to the subject and lays a basis for more in-depth study while providing opportunities for hands-on learning. Computer Science Press Pseudocode Version
The prose is too abstract for a first course algorithms book. Consider the hideous abstract description of the binary search algorithm in Chpt 3 as the normal approach for the book. As a student I generally prefer concrete motivations, idea or examples followed by abstraction and algorithm. Also this book strangely doesn't bother talking about Turing machines though it talks about P/NP problems. It also omits red-black trees, B-trees, and other balancing algorithms. Instead it has 3 chapters on inter-processor algorithms. On a positive side, it generously covers dynamic programming in multiple chapters with many examples and exercises.
Fortunately I'm only using this book as a refresher for which it actually works well. A very nice plus is that it contains a large number of exercises. But to future teachers, please don't torture your poor undergrad students with such text; it turns them off to an otherwise interesting and important subject matter.