Ordenar un vector en Rust
Discutiremos la forma de clasificar los vectores en Rust en este artículo.
Funciones para Ordenar Vectores en Rust
La biblioteca estándar de Rust proporciona algunos tipos valiosos para ordenar vectores en Rust. Hay dos formas de ordenar en Rust: la función sort_by()
y la función sort()
.
La función sort_by()
ordena el vector según la clave dada, un número entero o una cadena, mientras que la función sort()
ordena el vector según el orden de sus elementos. La función sort()
toma el vector y lo devuelve ordenado.
Los valores se ordenan en orden ascendente de forma predeterminada. La clasificación se puede hacer en orden descendente agregando la palabra clave inversa antes del operador de comparación (<
).
Algoritmo de clasificación de un vector en Rust
El algoritmo de clasificación utilizado por Rust se llama QuickSort
. Funciona dividiendo el vector en dos mitades, luego clasificando recursivamente cada mitad hasta que no queden más elementos para clasificar.
En esta sección, aprenderemos cómo ordenar un vector en Rust.
- El primer paso es crear un vector de enteros.
- El segundo paso es ordenar los elementos del vector por sus valores y almacenarlos en orden ascendente.
- El tercer paso es implementar otra función, que toma dos vectores y devuelve un número entero que representa dónde un vector encontraría un valor igual en otro vector si estuviera ordenado.
- El cuarto paso es llamar a esta función en cada par de elementos en una matriz dada y devolver una matriz ordenada que ha sido ordenada por número de índice.
Usamos la función sort()
para ordenar enteros vectoriales en el siguiente ejemplo.
Código:
fn main() {
let mut vec = vec![100, 53, 12, 24, 67];
vec.sort();
assert_eq!(vec, vec![12, 24, 53, 67, 100]);
println!("{:?}", vec);
}
Producción :
[12, 24, 53, 67, 100]
El siguiente ejemplo usa la función sort_by()
para ordenar los vectores flotantes en Rust.
Código:
fn main() {
let mut vec = vec![1.2, 2.15, 7.5, 1.234, 5.0];
vec.sort_by(|a, b| a.partial_cmp(b).unwrap());
assert_eq!(vec, vec![1.2, 1.234, 2.15, 5.0, 7.5]);
println!("{:?}", vec);
}
Producción :
[1.2, 1.234, 2.15, 5.0, 7.5]
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook