algs4_rs

Crates.ioalgs4_rs
lib.rsalgs4_rs
version0.6.0
created_at2025-08-29 19:18:46.219529+00
updated_at2025-09-19 01:45:16.458531+00
descriptionRust implementations for the algorithms and clients in the text book "Algorithms, 4th Edition" by Robert Sedgewick and Kevin Wayne.
homepagehttps://github.com/rui-r-duan/algs4_rs
repositoryhttps://github.com/rui-r-duan/algs4_rs
max_upload_size
id1816415
size236,188
Rui Duan (rui-r-duan)

documentation

README

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, I/O APIs, len() instead of size(), and Option<&T> instead of NoSuchElementException.

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

Warning

The I/O APIs are not stable. Breaking changes may be made in the versions 0.y.z. The current versions are good for learning, though.

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 and utilities in examples directory.
  • Big-O analysis tools: Doubling Test, Doubling Ratio, Stop Watch (using Rust std), in examples directory, and LinearRegression in a library module.
  • Standard Input StdIn, file input FileIn, and abstract versatile input In, backed by the Java-util-like Scanner. They are all implemented without any external dependency.
  • Simplified but professional implementation of vector SVec to demonstrate Rust's equivalences of ResizingArrayStack, ResizingArrayQueue, etc. Advanced Rust is demonstrated in SVec.
  • Three implementations of Queue, with discussions, regarding linked list and vector.

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.

Commit count: 33

cargo fmt