Below is an ever changing list of things that I would like to accomplish or implement. If you feel something needs to be added simply do a pull request.
- Algorithms to implement:
- UUID Generator
- Bloom Filters
- Sorting
- In-Place Merge Sort
- Binary Tree Sort
- Cycle Sort
- Smoothsort
- Strand Sort
- Gnome Sort
- Divide and Conquer
- Maximum Subarray
- Strassen's Matrix Multiplication
- k-Selection (Minimum, Maximum, Median, Arbitrary k)
- Data Structures
- Stacks
- Queues
- Linked Lists
- Hash Tables
- Binary Search Trees
- Red-Black Trees
- B-Trees
- Fibonacci Heaps
- van Emde Boas Trees
- Dynamic Programming
- Matrix-Chain Multiplication
- Longest Common Subsequence
- Huffman Encoding
- Graph Algorithms
- Breadth-First Search
- Depth-First Search
- Uniform Cost Search
- A* Search
- Topological Sort
- Strongly Connected Components
- Minimum Spanning Trees / Maximum Flow
- Kruskal's Algorithm
- Prim's Algorithm
- Ford-Fulkerson Method
- Maximum Bipartite Matching
- Shortest Path
- Bellman-Ford Algorithm
- Dijkstra's Algorithm
- Floyd-Warshall Algorithm
- Matrix Inversion
- Simplex Algorithm for Linear Programs
- Fast Fourier Transform
- RSA
- Primality Testing
- Integer Factorization
- Closest Pair of Points
- Feature Subset Search Algorithms
- Sequential Search Algorithms
- Sequential Forward Selection (SBS)
- Sequential Backward Selection (SFS)
- 'plus l take away r' - algorithm (SBS + SFS)
- Sequential Floating Forward Algorithm (SFFS)
- Misc.:
- Performance Tests
- Much much more extensive testing, edge cases, etc
- Steal more algorithms from Algorithms by Dasgupta, Papadimitriou, and Vazirani
- Also extract algorithms from The Algorithm Design Manual by Skiena