I've recently come across an excellent book, introduction of algorithms. I implemented the first section of the book, insertion sort, in python and was very happy to do so. However, I am still confused as to how insertion sort's complexity is determined. I've never taken calculus before, but I have a feeling learning algorithms may take more math than that. If I were to read books such as introduction to algorithms and Donald Knuth's books, what math should I study on? And are these available online somewhere (maybe khan academy, or perhaps some college with free courses)?