A version of what is normally called discrete mathematics, combined with first-year (university) level calculus are the primary requirements to understanding many (basic) algorithms and their analysis.
Specialized or advanced algorithms can require additional or advanced mathematical background, such as in statistics / probability (scientific and financial programming), abstract algebra, and number theory (i.e. for cryptography).
As a student my discrete mathematics course had the textbook Discrete Mathematics with Applications by Susanna Epp, and another textbook I found in my library was Discrete Mathematics by Kenneth Ross and Charles Wright. A decent quality used copy of one of these is likely a reasonable place to start (with or without combining with the MIT Open Course Ware, depending on your learning style). For self-study I often find having two sources to refer to can help clarify points I'm having trouble understanding.
An alternative I've seen suggested is Concrete Mathematics, Second edition by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. I cannot find my copy at the moment, and have not worked through it diligently so I cannot make a recommendation for or against it.
From the Preface:
But what exactly is Concrete Mathematics? It is a blend of continuous
and discrete mathematics. More concretely, it is the controlled
manipulation of mathematical formulas, using a collection of
techniques for solving problems.
I'll note the curmudgeon comments of Bill the Lizard in this blog entry "Books Programmers Don't Really Read". Personally I still find Robert Sedgewick's Algorithms (now 4th ed.) less intimidating and more approachable.
In regards to the continuous (i.e. Real numbers) part of mathematics, Calculus by Stewart seems to be a frequently used tome for lecturing to students on the enlightenment that comes from differentiation and integration.