当前推荐的排序向量值的方法是什么?
具有总排序的可变元素片具有 sort方法。
sort
因为 Vec<T>实现了 DerefMut<[T]>,所以可以直接在向量上调用这个方法,所以 vector.sort()可以工作。
Vec<T>
DerefMut<[T]>
vector.sort()
虽然上面提出的解决方案可以对整数的向量进行排序,但是我在对浮点数的向量进行排序时遇到了问题。
最简单的解决方案是使用 快速排序板条箱,它也可以对浮点数进行排序。 快速排序板条箱还可以对任何类型的其他向量进行排序,并实现使用比较(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进行排序,需要的是 在大多数情况下 v.sort()。
v
v.sort()
如果你想应用一个 习俗排序规则,你可以通过 v.sort_by()做到这一点。其中包括希望对以下值进行排序的情况:
v.sort_by()
Ord
f64
还要注意的是,sort()和 sort_by()使用的是 稳定排序算法(即,相等的元素不会被重新排序)。如果不需要稳定的排序,可以使用 sort_unstable()/sort_unstable_by(),因为它们通常更快一些,并且使用更少的内存。
sort()
sort_by()
sort_unstable()
sort_unstable_by()