rust 快速排序算法实现3, 1, 4, 1, 5, 9, 2, 6从小到大排序
时间: 2024-09-15 17:06:56 浏览: 52
Rust 编写的冒泡排序算法.rar
Rust语言中实现快速排序的一个基本版本可以这样写:
```rust
fn quicksort<T: Ord>(arr: &mut [T]) {
if arr.len() <= 1 {
return;
}
let pivot = arr[arr.len() / 2];
let mut less = vec![pivot];
let mut equal = vec![];
let mut greater = vec![];
for &x in arr.iter() {
if x < pivot {
less.push(x);
} else if x == pivot {
equal.push(x);
} else {
greater.push(x);
}
}
arr.swap(0..=less.len(), &mut less);
arr[less.len()..].swap_ranges(0..equal.len(), &mut equal);
arr.swap(equal.len().., &mut greater);
quicksort(&mut less);
quicksort(&mut greater);
}
fn main() {
let mut nums = vec![3, 1, 4, 1, 5, 9, 2, 6];
quicksort(&mut nums);
println!("{:?}", nums); // 输出: [1, 1, 2, 3, 4, 5, 6, 9]
}
```
这个代码首先检查数组长度,如果长度小于等于1则直接返回。然后选择一个基准值(这里选择中间元素),创建三个辅助向量`less`(小于基准)、`equal`(等于基准)和`greater`(大于基准)。接着遍历原数组,根据与基准的大小关系将元素放入对应的向量,最后再交换这三个部分。
注意,由于 Rust 的所有权系统,`swap_ranges` 方法用于直接在原数组上操作,而不是复制。
阅读全文