Here are a few (in no particular order):<p>- Dynamic Programming<p>- Graph algorithms: Traversal (A*), shortest path (Dijkstra, Bidirectional, Floyd–Warshall), minimum spanning tree<p>- Recursive Search Techniques<p>- Search Trees (binary, n-ary, splay, AVL)<p>- Suffix trees<p>- Parsing using regex<p>- Sorting (with all the variations)<p>- Hashing<p>- Greedy Algos<p>- Divide and conquer<p>- Genetic algorithms<p>There are a few other algorithms that are must-know too. I guess that would depend on the domain we are in (computer vision, machine learning, NLP, etc).
Do the Advanced Algorithms course in MIT`s Open Courseware site here <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2005/index.htm" rel="nofollow">http://ocw.mit.edu/courses/electrical-engineering-and-comput...</a><p>Also look into Hadoop, Mahout and machine learning in general.
The best algorithm I know is to use the appropriate built-in classes, and then do something clever only if performance is an issue.<p>In my opinion knowing the popular and "best practice" design patterns is more important than knowing a lot of algorithms. Although I suppose they overlap a bit.