This project aiming to reinvent algorithms and data structures for fun and education. It is very much a work in progress, and it likely always will be. As I hear about new algorithms or interesting data structures, I will attempt to implement them myself to gain a better understanding of how they really work.
Currently I have used Java for everything in this project.
The rest of this page provides links to each section of content and a small list of website references that I've used to come up with my list of algorithms and data structures. The items in the lists that are not links have not been implemented yet.
Algorithms:
- Selection Sort - Insertion Sort - Bubble Sort - Merge Sort - Quicksort - Prime Testing - Prime Trial Division - Sieve of Eratosthenes - Fibonacci - Dynamic Programming, Memoization (with Project Euler examples) - Greedy - Divide and Conquer - Djikstra's - A* - Breadth First Search - Depth First Search - Bellman-Ford - Floyd-Warshall - Johnson's - Matching Algorithms? - Huffman coding? - Prim/Kruskal (Minimum Spanning Tree) - Binary Search - Convex Hull -- Graham Scan -- Monotone Chains algo? - Coordinate Compression? - Edmonds--Karp - Ford--Fulkerson - Dinie's algo - Hungarian algo - Tarjan's algo (strongly connected components) - Knuth-Morris-Pratt (string searching) - Z algorithm - Suffix arrays/trees Data Structures:
- Linked List - Binary Search Tree - Red/Black Tree - Heap - Stack - Queue - Trie - Hash Table - Bloom Filter? - Graph - Adjacency matrix? - Range Trees, Interval Trees, Segment Trees - Binary Indexed Trees, Fenwich Trees