This is a tough call, and it depends on where you want to take your programming career. Learning algorithms is an awesome idea if you plan to research computer science, however the benefit is diminished somewhat if you want to become a web developer.
Don't get me wrong, algorithms and how they are derived is very important, but you might want to answer the question "What sort of programming do I want to do?" before planning your skill set.
For instance if you want work as an enterprise applications developer, you might want to familiarize yourself with a framework (.NET, CSLA, RoR, J2EE) and a new language instead. Then spend time learning about patterns, rather than algorithms, since most of the hard algorithmic work is taken care of by the framework.
You might be enamoured with cryptographics, so a skillset involving mathematics, crypto theory and the like is obviously going to matter more.
A budding games developer might want to spend time learning about matrix transformations, game engine design and performance optimization.
I guess if you have infinite time and resources, the ideal scenario is to learn as much as you can about all aspects of programming. The fact is all of these things are important to know. The reality is often that we dont have the time, so having some direction first will really help you prioritize which skills are most important to you.