Jaka jest obecnie zalecana metoda sortowania wartości w wektorze?
Jaka jest obecnie zalecana metoda sortowania wartości w wektorze?
Odpowiedzi:
sort_by
metoda, która pozwala na całkowicie niestandardowy predykat.
self.sort()
== self.sort_by(|a, b| a.cmp(b))
.
.sort()
jeśli typ T
implementuje cmp::Ord
cechę.
sort_unstable
to, że jest nieco szybszy, ale możesz zmienić kolejność elementów „równych”
Chociaż zaproponowane powyżej rozwiązania mogą sortować wektory liczb całkowitych, miałem problemy z sortowaniem wektorów typu float.
Najprostszym rozwiązaniem było użycie szybkiej skrzyni , która może również sortować pływaki. Skrzynia quickersort może również sortować inne wektory dowolnego typu, a także implementuje metody sortowania za pomocą porównań (sort_by).
Poniżej znajduje się kod Rusta:
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))
powinieneś pracować z pływakami. (W zależności od tego, co chcesz zrobić z NaN w tablicy, możesz napisać bardziej ostrożną funkcję porównawczą.)