Skiena's "Algorithm Design Manual" (which recently got a third edition) introduces algos and their application -- when to use them, why you might use one over another, etc. With lengthy "stories from the trenches" about problems he's solved using them, in some cases. And it's a handy reference on the ideas behind the algos, too