- Dynamic Programming
- Graph algorithms: Traversal (A*), shortest path (Dijkstra, Bidirectional, Floyd–Warshall), minimum spanning tree
- Recursive Search Techniques
- Search Trees (binary, n-ary, splay, AVL)
- Suffix trees
- Parsing using regex
- Sorting (with all the variations)
- Hashing
- Greedy Algos
- Divide and conquer
- Genetic algorithms
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).
Also look into Hadoop, Mahout and machine learning in general.
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.
https://en.wikipedia.org/wiki/Sorting_algorithm
https://en.wikipedia.org/wiki/Divide_and_conquer_algorithm
https://en.wikipedia.org/wiki/Backtracking
https://en.wikipedia.org/wiki/Dynamic_programming
https://en.wikipedia.org/wiki/Greedy_algorithm
https://en.wikipedia.org/wiki/Depth-first_search
https://en.wikipedia.org/wiki/Breadth-first_search
https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_ma...
https://en.wikipedia.org/wiki/Minimax
https://en.wikipedia.org/wiki/A*_search_algorithm
https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorit...
https://en.wikipedia.org/wiki/Newton%27s_method
https://en.wikipedia.org/wiki/Gradient_descent
https://en.wikipedia.org/wiki/Naive_Bayes_classifier
https://en.wikipedia.org/wiki/Linear_regression
https://en.wikipedia.org/wiki/Perceptron
https://en.wikipedia.org/wiki/Principal_component_analysis
Solve some of: