#排序 #索引 #算法

index-sort

使用用户指定的交换和比较函数按索引排序容器

1 个不稳定版本

0.1.0 2022年8月25日

#2127 in 算法

MIT 许可证

14KB
307

index-sort

除了切片外,还有更多需要排序的容器。这个库提供了一种通过简单的 API(由两个函数组成:compareswap)对这些容器进行排序的方法。`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 中使用的实现作为基础的快速排序算法执行不稳定排序

无运行时依赖项