web-dev-qa-db-fra.com

Comment trier un vecteur dans Rust?

Quelle est la méthode actuellement recommandée pour trier les valeurs dans un vecteur?

55
Maxim Sloyko

Une tranche modifiable d'éléments avec un ordre total a une méthode sort .

Étant donné que Vec<T> implémente DerefMut<[T]>, vous pouvez appeler cette méthode directement sur un vecteur afin que vector.sort() fonctionne.

65
Chris Morgan

Alors que les solutions proposées ci-dessus peuvent trier les vecteurs d’entiers, j’ai eu des problèmes pour trier les vecteurs de flotteurs.

La solution la plus simple consistait à utiliser le quickersort crate , qui permet également de trier les flottants . Le quickersort crate peut également trier d’autres types de vecteurs et implémenter des méthodes de tri utilisant des comparaisons (sort_by).

Voici le code 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
0
Salvatore Cosentino