RustLang-切片(Vector)排序


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!");
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM