rust-algorithms:5-梳排序

pub fn comb_sort<T: Ord>(arr: &mut [T]) {
    let len = arr.len();
    let mut gap = len;
    let shrink = 1.3;
    let mut sorted = false;
    while !sorted {
        gap = (gap as f32 / shrink).floor() as usize;
        // 步进小于1,转化为基础的冒泡
        if gap <= 1 {
            gap = 1;
            sorted = true;
        }
        // gap > 1时只是作为调整,gap等于1时候化为冒泡
        for index in 0..len - gap {
            if arr[index] > arr[index + gap] {
                arr.swap(index , index + gap);
                sorted = false;
            }
        }
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!