当前位置:首页 > Rust > 正文

手把手教你用 Rust 实现冒泡排序(零基础也能学会的算法入门)

在学习编程的过程中,排序算法是绕不开的基础内容。其中,冒泡排序因其逻辑简单、易于理解,常被作为初学者接触算法的第一站。本文将带你从零开始,使用 Rust 语言一步步实现冒泡排序,并深入理解其工作原理。

什么是冒泡排序?

冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表,比较相邻的两个元素,如果顺序错误就交换它们。这个过程会重复进行,直到整个列表有序为止。之所以叫“冒泡”,是因为较小的元素会像气泡一样慢慢“浮”到列表的顶部(或底部,取决于排序方向)。

手把手教你用 Rust 实现冒泡排序(零基础也能学会的算法入门) Rust冒泡排序  Rust算法教程 冒泡排序实现 Rust初学者指南 第1张

为什么选择 Rust 来学习冒泡排序?

Rust 是一门现代系统编程语言,强调内存安全与并发性能。虽然它不像 Python 那样语法极简,但其清晰的类型系统和所有权机制能帮助你写出更健壮、高效的代码。对于初学者来说,用 Rust 实现基础算法不仅能巩固语法知识,还能培养良好的编程习惯。

Rust 冒泡排序完整实现

下面是一个完整的冒泡排序函数实现。我们将对一个整数向量(Vec<i32>)进行升序排序:

fn bubble_sort(arr: &mut Vec<i32>) {    let n = arr.len();    for i in 0..n {        // 标记本轮是否发生交换        let mut swapped = false;        // 每轮比较到 n - i - 1 即可        for j in 0..n - i - 1 {            if arr[j] > arr[j + 1] {                // 交换元素                arr.swap(j, j + 1);                swapped = true;            }        }        // 如果本轮没有交换,说明已经有序,提前退出        if !swapped {            break;        }    }}fn main() {    let mut numbers = vec![64, 34, 25, 12, 22, 11, 90];    println!("排序前: {:?}", numbers);    bubble_sort(&mut numbers);    println!("排序后: {:?}", numbers);}  

代码详解

  • &mut Vec<i32>:函数接收一个可变引用,这样可以在原地修改数组,避免不必要的内存拷贝。
  • 双重循环:外层循环控制排序轮数,内层循环负责相邻元素的比较与交换。
  • 优化点:引入 swapped 标志位。如果某一轮没有发生任何交换,说明数组已经有序,可以提前结束,提升效率。
  • arr.swap(j, j + 1):Rust 提供的安全交换方法,无需手动临时变量。

运行结果

排序前: [64, 34, 25, 12, 22, 11, 90]
排序后: [11, 12, 22, 25, 34, 64, 90]

总结

通过本教程,你已经掌握了如何在 Rust 中实现冒泡排序。虽然冒泡排序的时间复杂度为 O(n²),不适合处理大规模数据,但它作为Rust算法教程中的经典案例,非常适合帮助初学者理解循环、引用、可变性等核心概念。

希望这篇Rust冒泡排序教程能为你打开算法世界的大门。如果你是 Rust 初学者,不妨多练习类似的Rust初学者指南内容;如果你对算法感兴趣,也可以尝试用 Rust 实现其他排序算法,如选择排序、插入排序等。

祝你在 Rust 编程之旅中越走越远!