#排序 #二分查找 #搜索 #快速排序 #查找

searchsort

实现二分查找和快速排序算法的 Rust 特性

1 个不稳定版本

0.1.0 2023年9月9日

1988算法

MIT 许可证

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_mequicksort 方法的测试和基准测试。

示例

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

无运行时依赖

功能