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
一个包含算法集合的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