Data Types:
- Primitive
- Arrays
- Dynamic Arrays (ArrayLists or Vectors)
- Lists
- Stacks
- Queues
- Priority Queues
- Trees
- BST
- Graphs
- Heaps
- Min-Max Heaps
- Fibonacci Heaps
- Soft Heaps – http://www.siam.org/proceedings/soda/2009/SODA09_053_kaplanh.pdf, http://www.cs.princeton.edu/~chazelle/pubs/sheap.pdf
- Sets
- Maps
- Disjoint Set
- Range Trees
- Segment Trees
- Interval Trees
- Disjoint Set Data Structures
Sorts:
- Bogo Sort
- Bubble Sort
- Selection Sort
- Insertion Sort
- Heap Sort
- Soft Heap Sort 🙂
- Merge Sort
- Quick Sort
- Radix Sort
- Intro Sort
Simple Algorithms:
- Ad-Hoc Algorithms
- Greedy Algorithms
- Making Change
- Huffman Trees
- Graph Theory
Graph Theory:
- BFS
- DFS
- DFS ID
- Floodfill
Shortest Path Graph Theory:
- A*
- Dijkstra
- Floyd-Warshall
- Bellman Ford
- Slow-Fast Cycle Finding
Advanced Graph Theory:
- Minimal Spanning Tree
- Prim’s Algorithm
- Kruskall’s Algorithm
- Eulerian Tour
- Network Flow
Strings:
- Hashing
- Rabin-Karp
- others?
- Matching
- Knuth-Morris-Pratt String Matching
- Suffix Arrays
- Suffix Trees
- Suffix Trie
- Moniker’s Algorithm (not really strings…)
Dynamic Programming:
- Integer Knapsack
- Continuous Knapsack
- Maximum Value Contiguous Subsequence
- Making Change
- Longest Increasing Subsequence
- Box Stacking
- Building Bridges
- Integer Knapsack Problem (Duplicate Items Forbidden)
- Balanced Partition
- Edit Distance
- Counting Boolean Parenthesizations
- Optimal Strategy for a Game
- Two-Person Traversal of a Sequence of Cities
- Bin Packing (Simplified Version)
Computational Geometry:
- Static
- Convex hull
- Line segment intersection
- Delaunay triangulation
- Voronoi diagram
- Linear programming
- Closest pair of points
- Euclidean shortest path
- Polygon triangulation
- Mesh generation
- Query
- Range searching
- Point location
- Nearest neighbor
- Ray tracing