如何在Rust中对矢量进行排序?

Max*_*yko 62 rust

目前推荐的向量中的值排序方法是什么?

Chr*_*gan 74

具有总排序的可变片元素具有sort方法.

因为Vec<T>implements DerefMut<[T]>,你可以直接在vector上调用这个方法,所以vector.sort()有效.

  • 还有`sort_by`方法,它允许完全自定义谓词. (7认同)
  • 正如文档所说,`self.sort()`==`self.sort_by(| a,b | a.cmp(b))`. (7认同)
  • 您还可以看看 `sort_unstable` 它更快一点,但可以重新排序“相等”元素 (3认同)

at5*_*321 10

在大多数情况下v,要对向量进行排序,这就是您所需要的。 v.sort()

如果您想应用自定义排序规则,可以通过 来实现v.sort_by()。这包括您想要对以下值进行排序的情况:

  • 不实现Ord(例如f64,大多数结构体等);
  • 执行Ord,但您想应用特定的非标准排序规则。

另请注意,sort()sort_by()使用稳定的排序算法(即,相等的元素不会重新排序)。如果不需要稳定的排序,可以使用sort_unstable()/ sort_unstable_by(),因为它们通常更快一些并且使用更少的内存。