¿Cuál es el método recomendado actualmente para ordenar valores en un vector?
¿Cuál es el método recomendado actualmente para ordenar valores en un vector?
Respuestas:
sort_by
método que permite un predicado completamente personalizado.
self.sort()
== self.sort_by(|a, b| a.cmp(b))
.
.sort()
si el tipo T
implementa el cmp::Ord
rasgo.
sort_unstable
que es un poco más rápido, pero podría reordenar elementos "iguales"
Si bien las soluciones propuestas anteriormente pueden ordenar vectores de números enteros, tuve problemas para ordenar vectores de flotantes.
La solución más simple fue utilizar la caja quickersort , que también puede clasificar flotadores. La caja de clasificación rápida también puede clasificar otros vectores de cualquier tipo y también implementa métodos para clasificar mediante comparaciones (sort_by).
A continuación se muestra el código de 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.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))
debería funcionar con flotadores. (Dependiendo de lo que desee hacer con los NaN en la matriz, puede escribir una función de comparación más cuidadosa).