1 个不稳定版本
0.1.0 | 2023年9月9日 |
---|
1988 在 算法
11KB
237 行
SearchSort
一个实现二分查找和快速排序算法的 Rust 特性。目前,它们是为 Vec<T>
类型实现的,但可以扩展到其他集合类型。
用法
cargo add searchsort
示例
use searchsort::SearchSort;
let arr = vec![4, 82, 4, 32, 3, 20, 3, 2, 2, 9, 8, 7, 5, 0];
let find = 5;
assert_eq!(arr.find_me(find, 0, arr.len()-1), Some(12));
let mut arr = vec![3, 1, 4, 1, 5, 9, 2, 6, 5];
arr.quicksort();
assert_eq!(arr, [1, 1, 2, 3, 4, 5, 5, 6, 9]);
为什么
这是我第一次实现二分查找和快速排序算法。我感觉这可能不会是最后一次。
lib.rs
:
该包提供了一个 SearchSort
特性,定义了搜索和排序的方法。
SearchSort
特性提供了一个 find_me
方法,用于在切片中查找元素的第一出现位置,起始和结束索引之间。如果找到,则返回 Some(index)
,否则返回 None
。
该包还为 Vec<T>
类型提供了 SearchSort
特性的实现,允许你在向量上使用 find_me
方法。
此外,该包提供了一个 quicksort
方法,使用快速排序算法就地排序可变切片。
该包还包括了对 find_me
和 quicksort
方法的测试和基准测试。
示例
use searchsort::SearchSort;
let arr = vec![4, 82, 4, 32, 3, 20, 3, 2, 2, 9, 8, 7, 5, 0];
let find = 5;
assert_eq!(arr.find_me(find, 0, arr.len()-1), Some(12));
let mut arr = vec![3, 1, 4, 1, 5, 9, 2, 6, 5];
arr.quicksort();
assert_eq!(arr, [1, 1, 2, 3, 4, 5, 5, 6, 9]);