good for you.
have you considered some college courses? ususally you can take some algorithm type classes there.
i find that a strong math background is very very helpful, both in problem solving, and basic number manipulation skills. Many of the things you do in programming are based on mathematical foundations. The algorithms you will end up using or creating will be drivin by the types of programs you wish to write.