Was ist die derzeit empfohlene Methode zum Sortieren von Werten in einem Vektor?
Was ist die derzeit empfohlene Methode zum Sortieren von Werten in einem Vektor?
Antworten:
sort_byMethode, die ein vollständig benutzerdefiniertes Prädikat ermöglicht.
self.sort()== self.sort_by(|a, b| a.cmp(b)).
.sort()wenn der Typ Tdas cmp::OrdMerkmal implementiert .
sort_unstabledarauf werfen, dass es etwas schneller ist, aber "gleiche" Elemente neu anordnen
Während die oben vorgeschlagenen Lösungen Vektoren von ganzen Zahlen sortieren können, hatte ich Probleme beim Sortieren von Vektoren von Floats.
Die einfachste Lösung war die Verwendung der Quickersort-Kiste , mit der auch Schwimmer sortiert werden können. Die Quickersort-Kiste kann auch andere Vektoren eines beliebigen Typs sortieren und implementiert Methoden zum Sortieren mithilfe von Vergleichen (sort_by).
Es folgt der Rust-Code:
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))sollten Sie mit Schwimmern arbeiten. (Je nachdem, was Sie mit NaNs im Array tun möchten, können Sie eine sorgfältigere Vergleichsfunktion schreiben.)