在 Rust 语言中实现冒泡排序算法,你可以使用以下的代码。冒泡排序是一种简单的排
序算法,它重复地遍历要排序的列表,比较每对相邻的项,如果它们的顺序错误就把它
们交换过来。遍历列表的工作是重复地进行直到没有再需要交换,也就是说该列表已经
排序完成。
以下是一个使用 Rust 编写的冒泡排序算法的实现:
fn bubble_sort<T: Ord>(arr: &mut [T])
where
T: std::cmp::Ord, // 要求 T 实现 Ord trait,以便可以使用<操作符
{
let len = arr.len();
for i in 0..len {
let mut swapped = false;
for j in 0..len - i - 1 {
if arr[j] > arr[j + 1] {
// 交换 arr[j]和 arr[j + 1]
arr.swap(j, j + 1);
swapped = true;
}
}
// 如果这一轮没有发生交换,说明数组已经有序,可以提前退出
if !swapped {
break;
}
}
}
fn main() {
let mut arr = [64, 34, 25, 12, 22, 11, 90];
bubble_sort(&mut arr);
println!("{:?}", arr); // 输出: [11, 12, 22, 25, 34, 64, 90]
}
在这个代码中,
bubble_sort
函数接受一个可变引用到泛型切片
[T]
,其中
T
实现了
Ord
trait(即可以比较大小的类型)。它使用两层循环来比较和(如果需要的话)交换
元素。内部循环从列表的开始遍历到列表的末尾(减去已经确定排序好的部分),外部
循环则控制整个排序过程,直到没有元素需要交换为止。
在 main 函数中,我们创建了一个整数切片并调用 bubble_sort 函数来对其进行排序。然
后,我们使用 println!宏来打印排序后的数组。