1 个不稳定版本
0.1.0 | 2022年8月25日 |
---|
#2127 in 算法
14KB
307 行
index-sort
除了切片外,还有更多需要排序的容器。这个库提供了一种通过简单的 API(由两个函数组成:compare
和 swap
)对这些容器进行排序的方法。`compare 函数比较两个索引处的元素,而 `swap 函数交换两个索引处的元素。任何通过提供这些函数实现 `Sortable 特性的容器都可以使用提供的排序函数进行排序。
示例
排序向量
use index_sort::merge_sort;
let mut v : Vec<i32> = (0..1000).rev().collect();
let rng = 0..v.len();
merge_sort(&mut v[..], rng);
按字典顺序排序一对向量
use index_sort::quick_sort;
let mut v1 : Vec<i32> = vec![5, 2, 1, 3, 6, 3];
let mut v2 : Vec<i32> = vec![1, 4, 2, 5, 7, 0];
let rng = 0..v1.len();
let mut v = (v1, v2);
quick_sort(&mut v, rng);
算法
以下提供以下排序算法。它们都具有相同的 API。
insertion_sort
执行经典的 N^2 排序算法merge_sort
使用来自 fastutil 库的归并排序算法的变体执行原地稳定排序quick_sort
使用 Servo 中使用的实现作为基础的快速排序算法执行不稳定排序