Algos

Crates.io Documentation Build Status dependency status GitHub license

A Rust library with a collection of algorithms. Mostly intended as learning exercises for Rust.

Only sort, search and pattern matching algorithms for now. It is planned to add graph algorithms as well.

Usage

Add this to your Cargo.toml:

toml [dependencies] algos = "0.3"

and this to your crate root if on 2015 edition:

rust extern crate algos;

Sorts Algorithms

Add this to your crate root:

rust use algos::sort;

and create an array and use like this:

rust fn fn main() { let mut v = [2, 3, 1, 9, 8, 4]; // Crescent sorting sort::heap(&mut v, &|a,b| a<b); // For decreasing sorting, change the signal in &|a,b| a>b. }

It can also work in an array of Strings, sorting by the length of the string:

rust fn main() { let mut v = ["bc", "a", "def", "klmno", "ghij", "pqrstu"]; // Crescent sorting sort::merge(&mut v, &|a,b| a.len()<b.len()) }

Search Algorithms

Add this to your crate root:

rust use algos::search;

and create an array and use like this:

```rust fn fn main() { // Remember that your array must be crescent sorted. let mut v = [1, 2, 3, 4, 5, 7, 9];

let find = search::binary(&v, &5);

} ```

Pattern Matching algorithms

Add this to your crate root:

rust use algos::pattern;

and use like this:

rust fn fn main() { let p = "ATCGGATTTCAGAAGCT".as_bytes(); let find = karp_rabin(&p, &"TTT".as_bytes()); // Type Return<usize, usize> }

Implemented

Sorts

Searches

String Matching