RustLang - 切片(Vector)排序
整数 Vector 排序 你想对整数类型的动态数组 vector 进行排序。
///
/// 整数 Vector 排序
/// 你想对整数类型的动态数组 vector 进行排序。
fn main() {
let mut vec = vec![1, 5, 10, 2, 15];
println!(" 排序前: {:?}", vec);
// vec.sort();
vec.sort_unstable();
println!(" 排序后: {:?}", vec);
assert_eq!(vec, vec![1, 2, 5, 10, 15]);
// 模板代码
println!("Hello, world!");
}
浮点数 Vector 排序 你想对浮点类型的动态数组 vector 进行排序。
///
/// 浮点数 Vector 排序
/// 你想对浮点类型的动态数组 vector 进行排序。
///
fn main() {
let mut vec = vec![1.1, 1.15, 5.5, 1.123, 2.0];
println!(" 排序前: {:?}", vec);
vec.sort_by(|a, b| a.partial_cmp(b).unwrap());
println!(" 排序后: {:?}", vec);
assert_eq!(vec, vec![1.1, 1.123, 1.15, 2.0, 5.5]);
// 模板代码
println!("Hello, world!");
}
结构体 Vector 排序 你想对结构体类型的动态数组 vector 进行排序。
///
/// 结构体 Vector 排序
/// 你想对结构体类型的动态数组 vector 进行排序。
///
#[derive(Debug, Eq, Ord, PartialEq, PartialOrd)]
struct Person {
name: String,
age: u32,
}
impl Person {
pub fn new(name: &str, age: u32) -> Self {
Self {
name: name.to_string(),
age,
}
}
}
fn main() {
let mut people = vec![
Person::new("Zhang", 23),
Person::new("Liu", 60),
Person::new("Wang", 1)
];
println!(" 排序前: {:?}", people);
people.sort();
println!(" 排序后: {:?}", people);
people.sort_by(|a, b| b.age.cmp(&a.age));
println!(" 排序后(age): {:?}", people);
// 模板代码
println!("Hello, world!");
}