目前推荐的对向量中的值进行排序的方法是什么?
目前推荐的对向量中的值进行排序的方法是什么?
Answers:
sort_by
允许完全自定义谓词的方法。
self.sort()
== self.sort_by(|a, b| a.cmp(b))
。
.sort()
如果类型T
实现了cmp::Ord
特征,则可以调用。
sort_unstable
它的速度,但可以重新排序“相等”的元素
尽管上面提出的解决方案可以对整数向量进行排序,但我在对浮点向量进行排序时遇到了问题。
最简单的解决方案是使用quickersort板条箱,它也可以对浮点数进行排序。quickersort板条箱还可以对其他任何类型的向量进行排序,还可以实现使用比较进行排序的方法(sort_by)。
以下是Rust代码:
extern crate quickersort;
//let's create the vector with the values
let mut vals = Vec::new();
vals.push(31.2);
vals.push(31.2);
vals.push(10.0);
vals.push(100.4);
vals.push(4.1);
quickersort::sort_floats(&mut vals[..]); // sort the vector
v.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))
应该与浮点数一起使用。(取决于要对数组中的NaN进行的操作,可以编写更仔细的比较函数。)