MST

星途 面试题库

面试题:Rust集合在简单排序算法中的应用

请使用Rust的Vec集合实现一个简单的冒泡排序算法。要求代码能够处理任意数量的整数,并且要体现出Rust集合操作的特点,如所有权、借用等概念。
18.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn bubble_sort(mut numbers: Vec<i32>) -> Vec<i32> {
    let len = numbers.len();
    for i in 0..len {
        for j in 0..len - i - 1 {
            if numbers[j] > numbers[j + 1] {
                numbers.swap(j, j + 1);
            }
        }
    }
    numbers
}

可以这样调用这个函数:

fn main() {
    let mut numbers = vec![5, 4, 3, 2, 1];
    let sorted_numbers = bubble_sort(numbers);
    println!("{:?}", sorted_numbers);
}

在这段代码中:

  1. bubble_sort 函数接收一个 Vec<i32> 类型的可变参数 numbers,这体现了所有权的转移,numbers 的所有权被函数接管。
  2. 函数内部通过双重循环进行冒泡排序,在比较和交换元素时,直接对 numbers 进行操作,这是在函数内部对 numbers 的借用,而且由于 numbers 是可变的,所以这里是可变借用。
  3. 最后函数返回排序后的 Vec<i32>,所有权又回到调用者手中。