rust-algorithms:6-計數排序

godme發表於2022-07-25
pub fn counting_sort(arr: &mut [u32]) {
    let max = arr.iter().max().unwrap();
    // 構建max+1陣列,包含0
    let mut helper = vec![0; *max as usize + 1];
    // 計數
    for &value in arr.iter() {
        helper[value as usize] += 1;
    }
    let mut index = 0;
    for &value in helper.iter() {
        // 新增重複值
        // 計數為0的自動跳過
        for _ in 0..value {
            arr[index] = value;
            index += 1;
        }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章