Java MIT

algorithms

A collection of algorithms and data structures

W

williamfiset

Dernière activité 23 juin 2026
williamfiset/algorithms

18,8 k

étoiles

4,5 k

forks

48

issues ouvertes

adjacencyadjacency-matrixalgorithmalgorithmsdijkstradynamic-programmingedmonds-karp-algorithmgeometrygraph-theorylinear-algebramathematicsmatrix-multiplicationmaxflownlogsearch-algorithmsearch-algorithmssorting-algorithmsstringstraveling-salesmantree-algorithms

Ce README est souvent en anglais.

License: MIT Bazel Tests README Checker Sponsor

Algorithms & data structures project

Algorithms and data structures are fundamental to efficient code and good software design. Creating and designing excellent algorithms is required for being an exemplary programmer. This repository's goal is to demonstrate how to correctly implement common data structures and algorithms in the simplest and most elegant ways.

🎬 Many of the algorithms and data structures in this repo have companion video explanations on the William Fiset YouTube channel — so if the code alone doesn't click, grab some popcorn and watch the videos!

Running an algorithm implementation

To compile and run any of the algorithms here, you need at least JDK version 8 and Bazel

This project uses Bazel as its build system. Install Bazel by following the official installation guide.

Run a single algorithm like this:

bazel run //src/main/java/com/williamfiset/algorithms/<subpackage>:<ClassName>

For instance:

bazel run //src/main/java/com/williamfiset/algorithms/search:BinarySearch

Run all tests:

bazel test //src/test/...

Run tests for a specific package:

bazel test //src/test/java/com/williamfiset/algorithms/sorting:all

Compiling and running with only a JDK

If you don't want to use Bazel, you can compile and run with just the JDK:

Create a classes folder

cd Algorithms
mkdir classes

Compile the algorithm

javac -sourcepath src/main/java -d classes src/main/java/<relative-path-to-java-source-file>

Run the algorithm

java -cp classes <class-fully-qualified-name>

Example

$ javac -d classes -sourcepath src/main/java src/main/java/com/williamfiset/algorithms/search/BinarySearch.java
$ java -cp classes com.williamfiset.algorithms.search.BinarySearch

Data Structures

Dynamic Programming

Dynamic Programming Classics

Dynamic Programming Problem Examples

Adhoc

Tiling problems

Geometry

More geometry algorithms

Graph theory

Tree algorithms

Network flow

Main graph theory algorithms

Linear algebra

Mathematics

Other

Search algorithms

Sorting algorithms

String algorithms

License

This repository is released under the MIT license. In short, this means you are free to use this software in any personal, open-source or commercial projects. Attribution is optional but appreciated.

Sponsor

Consider sponsoring to support my creation of educational content:

Sponsor

Projets similaires

All Algorithms implemented in Java

Javaalgorithmalgorithm-challengesalgorithms
TTheAlgorithms
66,3 k étoiles21,3 k

《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 等代码实现

Javaalgoalgorithmalgorithms
Kkrahets
130,5 k étoiles15,5 k

Solutions for some common algorithm problems written in Java.

Java
Ppedrovgs
2,8 k étoiles785