[−][src]Function tao_of_rust::ch05::borrow::bubble_sort_demo
pub fn bubble_sort_demo()
借用与引用
Base usage: 冒泡排序
fn bubble_sort(a: &mut Vec<i32>) { let mut n = a.len(); // 获取数组长度 while n > 0 { // 初始化遍历游标,max_ptr始终指向最大值 let (mut i, mut max_ptr) = (1, 0); // 冒泡开始,如果前者大于后者则互换位置,并设置当前最大值游标 while i < n { if a[i-1] > a[i] { a.swap(i-1, i); max_ptr = i; } i += 1; } // 本次遍历的最大值位置即是下一轮冒泡的终点 n = max_ptr; } } fn main() { let mut a = vec![1, 4, 5, 3, 2]; bubble_sort(&mut a); println!("{:?}", a); // [1, 2, 3, 4, 5] }Run