3 个版本
使用旧 Rust 2015
0.1.3 | 2016年4月23日 |
---|---|
0.1.2 | 2015年4月26日 |
0.1.1 |
|
0.1.0 | 2015年4月24日 |
在 算法 中排名 #788
每月下载量 86,306
用于 39 个 crate (10 个直接使用)
20KB
345 行
order-stat
计算顺序统计量和中位数中值。
lib.rs
:
计算顺序统计量。
这个 crate 允许在 (期望) 线性时间内计算第 k 小的元素,并通过中位数中值算法估计中位数元素。
安装
确保你的 Cargo.toml
包含
[dependencies]
order-stat = "0.1"
示例
kth
函数允许计算 Ord
类型切片的顺序统计量。
let mut v = [4, 1, 3, 2, 0];
println!("the 2nd smallest element is {}", // 1
order_stat::kth(&mut v, 1));
kth_by
函数接受一个任意闭包,用于浮点数和更一般比较的切片的顺序统计量。
let mut v = [4.0, 1.0, 3.0, 2.0, 0.0];
println!("the 3rd smallest element is {}", // 2
order_stat::kth_by(&mut v, 2, |x, y| x.partial_cmp(y).unwrap()));
#[derive(Debug)]
struct Foo(i32);
let mut v = [Foo(4), Foo(1), Foo(3), Foo(2), Foo(0)];
println!("the element with the 4th smallest field is {:?}", // Foo(3)
order_stat::kth_by(&mut v, 3, |x, y| x.0.cmp(&y.0)));
median_of_medians
函数给出了 Ord
类型切片的中位数的近似值。
let mut v = [4, 1, 3, 2, 0];
println!("{} is close to the median",
order_stat::median_of_medians(&mut v).1);
它还有一个 median_of_medians_by
变体,用于处理非 Ord
类型以及更一般的比较。
let mut v = [4.0, 1.0, 3.0, 2.0, 0.0];
println!("{} is close to the median",
order_stat::median_of_medians_by(&mut v, |x, y| x.partial_cmp(y).unwrap()).1);
#[derive(Debug)]
struct Foo(i32);
let mut v = [Foo(4), Foo(1), Foo(3), Foo(2), Foo(0)];
println!("{:?}'s field is close to the median of the fields",
order_stat::median_of_medians_by(&mut v, |x, y| x.0.cmp(&y.0)).1);