// the find
williamfiset/algorithms
A collection of algorithms and data structures
A Java implementations library covering ~70 algorithms and data structures, from AVL trees to Dinic's max flow to suffix arrays. It's primarily a learning resource tied to a YouTube channel, not a production library you'd drop into a project. The companion videos are genuinely useful when the code alone doesn't explain the why.
The graph theory section is unusually thorough — you get multiple max flow algorithms (Ford-Fulkerson, Edmonds-Karp, Dinic's, capacity scaling) with different complexity tradeoffs, not just the textbook one. Bazel integration with per-package BUILD files means you can run a single algorithm in isolation without wiring up a full project. The suffix array section includes three construction variants at different complexities, which is rare. Complexity annotations are on every entry in the README, so you can compare at a glance.
Java-only, which rules it out for anyone not already on the JVM — the geometry section even has .js files mixed in, suggesting some implementations were never ported. No library artifact published to Maven Central, so you can't take a dependency on it; you're copying source files. Several geometry implementations are flagged [UNTESTED] right in the README, which is an honest admission but also a warning sign. The repo has slowed significantly — meaningful algorithm additions appear to have stopped years ago, and it doesn't cover some practically important algorithms like A*, B-trees, or skip list balancing beyond the basic structure.