algs4_rs 0.3.0

Rust implementations for the algorithms and clients in the text book "Algorithms, 4th Edition" by Robert Sedgewick and Kevin Wayne.
Documentation

Overview

This public repository contains the Rust source code for the algorithms and clients in the text book Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

Goals

My goal is to cover all the algorithms code that the official algs4 repo provides, implementing them in Rust, trying to keep the APIs compatible to the official Java version. In some cases, the APIs are designed to be idiomatic Rust, for example, len() instead of size(), and Option<&T> instead of NoSuchElementException.

I hope that this crate helps people learn both Algorithms and Rust.

Features

  • In this repo, there is NO code for the exercises and assignments.
  • The library code only depends on Rust standard library, no other library is used.
  • Complete documentation.
  • Unit tests in the tests modules.
  • Clients in examples directory.
  • Big-O analysis tools: DoublingTest, DoublingRatio, Stop Watch (using Rust std), in examples directory, and LinearRegression in a library module.
  • Standard Input StdIn and file input In, backed by the Java-util-like Scanner. They are all implemented without any external dependency.
  • Simplified but professional implementation of Vec to demonstrate Rust's equivalences of ResizingArrayStack, ResizingArrayQueue, etc.

How to

cargo build
cargo build --examples  # build all the example binaries
cargo test
cargo test -- --show-output   # show stdout
cargo test bst   # only run the tests which contain name "bst"
cargo run --example doubling_ratio  # only run the binary doubling_ratio

Most internal modules are re-exported. For example,

use algs4_rs::BST; // `algs4_rs::bst::BST` is used

Copyright

Copyright © 2025 by Rui Duan.

License

This code is released under GPL version 3 or later.