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;
}
}
}
rust-algorithms:7-地精排序
Rust
343
0
0
2022-11-10
登录后可点赞和收藏
登录后可点赞和收藏