I'd like to start off by saying that I have no formal training in computer science. I have several years of programming experience but I'm entirely self-taught. Additionally, I have a relatively good grasp of common algorithms and their performance (e.g., time vs. space) characteristics.
Since I lack formal training, however, I feel like I might (and most likely do) have knowledge gaps when it comes to this subject (and others, of course).
I would therefore sincerely appreciate any book recommendations that cover this subject from a beginners* point of view.
NOTE: I realize that this question is a little subjective, but I really don't know of any other community with such a prevalent level of expertise among the member population; hence my asking here.
*I'd like to [re-]start from the basics to make sure I understand all the fundamentals.