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