#排序 #

bin+lib sorting_rs

Rust实现的各种排序算法的集合

12个稳定版本

1.2.10 2020年8月16日
1.2.9 2020年8月13日
1.2.2 2020年7月25日

算法中排名第682

Download history 9/week @ 2024-04-01

每月下载量51

MIT协议

83KB
1.5K SLoC

sorting_rs

Rust实现的排序算法。

使用方法

  1. 在Cargo.toml中添加此依赖,并考虑其版本
[dependencies]
sorting_rs = "1.2.0"
  1. 在Rust代码中使用可用的排序算法
use sorting_rs::*;
  1. 每个排序函数的API几乎相同:你只需要传递可变引用:&mut [T],或者 vec![T, T, T, ...]T 应该具有 PartialOrd 特性,有时你可能需要 CopyClone 特性,尽管所有实现都尽量减少这种额外要求。
  2. 有关算法的起源和实现细节的更多信息,请阅读模块文档。《维基百科》也是一个不错的起点。[链接](https://en.wikipedia.org/wiki/Sorting_algorithm)

此库包含以下排序算法

排序算法 功能和缺点 最坏情况性能 O(): 比较次数;交换次数 最好情况性能 O(): 比较次数;交换次数 空间复杂度 O()
Bingo 如果存在重复项,则旨在比选择排序更快 n + m2 nm
位序 基于构建排序网络的方法 nlog2n nlog2n nlog2n
冒泡 对于排序或反转输入来说很糟糕 n2; 2 1 1
鸡尾酒 比冒泡排序有轻微的性能提升 n2 n 1
组合 当数据几乎排序时加速 n2 nlogn 1
循环 使用最少的写入量,对于有限TBW的内存很好 n2 n2 1
侏儒 简单而缓慢,一次处理一个元素 n2 n 1
独立于数据分布 nlogn nlogn 1
弱堆 独立于数据分布,减少了比较次数 nlogn nlogn 1
N-堆 应该比默认堆更快。N = 3 nlogn nlogn 1
自下而上堆 减少比较次数的堆排序的升级版本 nlogn nlogn 1
插入 简单,但不如快速排序、堆排序或归并排序有效 n2; 2 1 1
归并 独立于数据分布 nlogn nlogn n
自下而上归并 与数据分布无关,归并排序的修改版本 nlogn nlogn n
奇偶排序 适用于具有本地互连的处理器 n2 n 1
奇偶批处理器 奇偶排序的更有效版本 log2n log2n logn2
煎饼排序 交换数据很多,但在实践中并不太有效 n3; 2n - 3 n2 n
快速排序 对于排序或反转输入来说很糟糕 n2 nlogn logn
快速排序的双重版本 快速排序的增强版本 n2 2nlnn logn
Ksort 快速排序的变体,在小于700万个元素时比堆排序更快 n2 nlog2n logn
选择排序 所有算法中最少交换次数 n2; n n2; 1 1
双选择排序 修改后的选择排序,工作负载更大,但效率更高 n2; n n2; 1 高于选择排序
希尔排序 它是插入排序的优化版本 n3/2nlogn2 nlogn 1
慢速排序 它很慢,谁会需要它呢?
平滑排序 堆排序的变体,适用于接近排序的数据 nlogn n 1
Stooge排序 它比慢速排序快一点 n2.7095 n

计划在将来实现新的算法

无运行时依赖