Is there a canonical reference on algorithm design?
I'm a decent enough C# programmer, but I have weak skills in math. Using the Khan Academy site to slowly build a foundation there.
In similar fashion, I am not as strong as I want to be with algorithms etc. If I focus I can grok quicksort and even implement it, but it doesn't come as easy as I would like it to. I want to train my brain to think more properly, in order to become a more effective programmer.
I'm talking about stuff like sorting, next_permutation etc. I can look at the code and get the gist of how they work, but I want to improve my foundation, if that makes sense.
I can read java if needed, since they are pretty similar, but something using .Net / C# features like generics etc. would be closer to what I do every day.
Any ideas? Thanks!