Skip to content
A collection of algorithms and data structures
Java Other
  1. Java 99.1%
  2. Other 0.9%
Branch: master
Clone or download

Latest commit

William Fiset William Fiset
William Fiset and William Fiset Boyer-Moore tweak
Latest commit bfcd6de Jun 8, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Check workflows (#160) Apr 5, 2020
gradle/wrapper Added Remove Method To Red Black Tree (#175) May 12, 2020
misc/images Added comment img Mar 1, 2020
references Add aho Corasick reference pdf Apr 5, 2020
slides Slide changes from promo video Jun 8, 2020
src Boyer-Moore tweak Jun 8, 2020
.gitignore implement RadixSort (#171) May 5, 2020
LICENSE Initial commit Mar 18, 2017
README.md Update README Jun 5, 2020
build.gradle Minor build dep change Apr 6, 2020
gradle.properties making 'gradle run' output cleaner by default Feb 3, 2020
gradlew support the Gradle Wrapper Feb 3, 2020
gradlew.bat support the Gradle Wrapper Feb 3, 2020

README.md

License: MIT Java CI with Gradle README Checker

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.

Contributing

This repository is contribution friendly 😃. If you'd like to add or improve an algorithm, your contribution is welcome! Please be sure to checkout the Wiki for instructions.

Running an algorithm implementation

To compile and run any of the algorithms here, you need at least JDK version 8. Gradle can make things more convenient for you, but it is not required.

Running with Gradle (recommended)

This project supports the Gradle Wrapper. The Gradle wrapper automatically downloads Gradle at the first time it runs, so expect a delay when running the first command below.

If you are on Windows, use gradlew.bat instead of ./gradlew below.

Run a single algorithm like this:

./gradlew run -Palgorithm=<algorithm-subpackage>.<algorithm-class>

Alternatively, you can run a single algorithm specifying the full class name

./gradlew run -Pmain=<algorithm-fully-qualified-class-name>

For instance:

./gradlew run -Palgorithm=search.BinarySearch

or

./gradlew run -Pmain=com.williamfiset.algorithms.search.BinarySearch

Compiling and running with only a 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 Problem Examples

Adhoc

Tiling problems

Geometry

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.

You can’t perform that action at this time.