rust-algorithms:7-地精排序

godme發表於2022-07-25
pub fn gnome_sort<T: PartialOrd>(arr: &mut [T]) {
    let len = arr.len();
    let mut cursor = 1;
    let mut anchor = cursor + 1;
    // 走到最後一個排序完成
    while cursor < len {
        // 檢測到無序,向後檢查
        if arr[cursor - 1] > arr[cursor] {
            arr.swap(cursor - 1, cursor);
            cursor -=  1;
            if cursor == 0 {
                cursor = 1;
            }
        } else {
            // 有序以後跳轉到錨點繼續檢查
            // 如果自然有序,錨點前進一步
            cursor = anchor;
            anchor += 1;
        }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章