[][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