#median #partition #select #no-std #nth-element

no-std kth

找到数组中的第 k 个元素(其中一个元素是中位数)

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017 年 5 月 29 日

#16 in #median

Download history 26/week @ 2024-03-15 35/week @ 2024-03-22 40/week @ 2024-03-29 13/week @ 2024-04-05 16/week @ 2024-04-12 25/week @ 2024-04-19 13/week @ 2024-04-26 14/week @ 2024-05-03 20/week @ 2024-05-10 15/week @ 2024-05-17 10/week @ 2024-05-24 13/week @ 2024-05-31 21/week @ 2024-06-07 15/week @ 2024-06-14 19/week @ 2024-06-21 8/week @ 2024-06-28

66 每月下载量
用于 3 crates

Apache-2.0 OR MIT

18KB
340

kth

数组分区及寻找第 K 个元素的算法

中位数是等于数组长度一半的顺序的元素。

crates.io

travis-ci

文档(发布版本)

文档(主分支)

Rust RFC 问题 #1470 讨论了添加类似接口。


lib.rs:

寻找第 K 个元素的算法

第 K 个元素是在数组排序后位于第 k 个索引的元素。

寻找中位数是寻找第 K 个元素的特殊情况,要寻找中位数,将 k 设置为数组长度的半数。

在寻找第 K 个元素时通常执行分区。一个数组在给定元素 X 之前的所有元素都小于 X,而在该元素 X 之后的所有元素都大于 X 时,该数组被分区。

示例

use kth::SliceExtKth;

let mut x = [6, 6, 8 ,1, 2];
// sorted =  1  2  6  6  8
let m = x.len()/2;
x.partition_by_kth(m);
println!("Median is {}", x[m]);
assert_eq!(x[x.len()/2], 6);

依赖项

~25KB