7个不稳定版本

0.4.0 2020年2月23日
0.3.2 2018年10月11日
0.3.1 2018年9月29日
0.3.0 2018年8月27日
0.1.1 2018年7月21日

#1642 in 算法

每月 25次下载

自定义许可证

54KB
934

Algos

Crates.io Documentation Build Status dependency status GitHub license

一个包含算法集合的Rust库。主要用作Rust的学习练习。

目前只包含排序、搜索和模式匹配算法。计划添加图算法。

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
algos = "0.3"

如果是2015版本,将其添加到您的crate根目录

extern crate algos;

排序算法

将其添加到您的crate根目录

use algos::sort;

并创建一个数组并按如下方式使用

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.
}

它也可以在字符串数组中使用,按字符串长度排序

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

搜索算法

将其添加到您的crate根目录

use algos::search;

并创建一个数组并按如下方式使用

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);
}

模式匹配算法

将其添加到您的crate根目录

use algos::pattern;

并按如下方式使用

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

实现

排序

  • 选择排序
  • 冒泡排序
  • 鸡尾酒排序
  • 插入排序
  • 归并排序
  • 快速排序
  • 堆排序

搜索

  • 线性搜索
  • 二分搜索
  • 指数搜索
  • 斐波那契搜索

字符串匹配

  • 暴力搜索
  • Karp-Rabin
  • Boyer-Moore
  • Horspool
  • 快速搜索
  • 双向搜索

依赖项

~595KB
~11K SLoC