About this project
This repository is a curated collection of algorithm and data structure implementations written in Java, designed to demonstrate correct and elegant implementations of common computational techniques. It serves as both a reference library and an educational resource for developers and students.
The project covers a wide range of topics organized into major sections:
**Data Structures**: Includes balanced trees (AVL, Red-Black), binary search trees, splay trees, dynamic arrays, Fenwick trees, Fibonacci heaps, hashtables (with multiple collision resolution strategies), linked lists, priority queues (binary heap, D-heap, indexed variants), queues, segment trees, sparse tables, stacks, suffix arrays, tries, and union-find structures.
**Dynamic Programming**: Features classic problems such as coin change, edit distance, knapsack variants, maximum contiguous subarray, longest common/increasing/palindrome subsequences, traveling salesman problem, and minimum weight perfect matching. Also includes practical examples like tiling problems and adhoc challenges.
**Geometry**: Covers 2D and 3D vector operations, circle and line intersection algorithms, closest pair of points, convex hull construction (Graham Scan and Monotone Chain), polygon area and containment checks, triangle area calculations, and geographic distance computations.
**Graph Theory**: A substantial section including tree algorithms (rooting, isomorphism, center, diameter, LCA), network flow algorithms (Ford-Fulkerson, Edmonds-Karp, Dinic's, capacity scaling, min-cost max-flow), and core algorithms such as BFS, DFS, Dijkstra's, Bellman-Ford, Floyd-Warshall, topological sort, minimum spanning trees (Kruskal's, Prim's, Boruvka's), strongly connected components (Tarjan's, Kosaraju's), articulation points, bridges, and Eulerian paths.
**Linear Algebra**: Includes Gaussian elimination, matrix operations (determinant, inverse, multiplication, power), Freivald's algorithm, and linear recurrence solvers.
**Mathematics**: Covers number theory topics including the Chinese Remainder Theorem, prime sieves, Euler's totient function, extended Euclidean algorithm, GCD, and Fast Fourier Transform.
The project uses Bazel as its build system (requiring JDK 8+), with clear instructions for running individual algorithms or the full test suite. Many implementations include companion video explanations on the William Fiset YouTube channel, making it accessible for visual learners. Each algorithm entry typically includes its time complexity, and the code is organized by topic with consistent naming conventions. The repository is licensed under MIT and includes CI/CD badges for Bazel tests and README URL checking.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.