I don’t know specific techniques to design good algorithms for problems.
I would suggest reading an introductory book on algorithms and data structures. There are a number of good ones, and none of them is strictly better than the rest, but for your case I would recommend Steve Skiena’s Algorithm Design Manual, which can probably be found in your university library. It’s very readable, discusses how to go about solving algorithmic problems, and has a lot of breadth.
This is some of the higher bang-for-the-buck knowledge in CS, and surprisingly relevant to the Real World.
My recommendation for mathsy people is two very different books: Skiena, recommended above, and “Introduction to algorithms” by Cormen, Leiserson, Rivest, and Stein. Skiena is informal, discursive, and strategic. CLRS is formal, mathematical, and tactical. They complement each other nicely.
[EDITED to add: CLRS and Sedgewick are quite similar in style and content. I find CLRS more rigorous and analytical, which is good in a complement to Skiena. Personally I’d prefer CLRS even without Skiena, but I can see why others might not. I should also say that I haven’t seen the latest edition of either book, and that I have a copy of CLRS but not of Sedgewick, which I therefore don’t know as well and may be being unfair to.]
Seconded; that’s the book I learned from, and would have been my runner-up recommendation. In particular, its pictures are excellent, and there are loads of them.
For anyone with a visual thinking process, the diagrams are invaluable. Seeing the nodes layed out spatially makes it really easy to understand how the algorithms work any why they achieve the performance they do.
I would suggest reading an introductory book on algorithms and data structures. There are a number of good ones, and none of them is strictly better than the rest, but for your case I would recommend Steve Skiena’s Algorithm Design Manual, which can probably be found in your university library. It’s very readable, discusses how to go about solving algorithmic problems, and has a lot of breadth.
This is some of the higher bang-for-the-buck knowledge in CS, and surprisingly relevant to the Real World.
I’ve found Sedgewick’s “Algorithms in ” to be a great introductory and comprehensive textbook for this stuff.
My recommendation for mathsy people is two very different books: Skiena, recommended above, and “Introduction to algorithms” by Cormen, Leiserson, Rivest, and Stein. Skiena is informal, discursive, and strategic. CLRS is formal, mathematical, and tactical. They complement each other nicely.
[EDITED to add: CLRS and Sedgewick are quite similar in style and content. I find CLRS more rigorous and analytical, which is good in a complement to Skiena. Personally I’d prefer CLRS even without Skiena, but I can see why others might not. I should also say that I haven’t seen the latest edition of either book, and that I have a copy of CLRS but not of Sedgewick, which I therefore don’t know as well and may be being unfair to.]
Seconded; that’s the book I learned from, and would have been my runner-up recommendation. In particular, its pictures are excellent, and there are loads of them.
For anyone with a visual thinking process, the diagrams are invaluable. Seeing the nodes layed out spatially makes it really easy to understand how the algorithms work any why they achieve the performance they do.