用rust实现快速排序
时间: 2023-10-16 10:25:14 浏览: 88
下面是使用Rust语言实现快速排序的代码:
```rust
fn quick_sort(array: &mut [i32]) {
if array.len() > 1 {
let pivot_index = partition(array);
quick_sort(&mut array[..pivot_index]);
quick_sort(&mut array[pivot_index + 1..]);
}
}
fn partition(array: &mut [i32]) -> usize {
let pivot_index = array.len() - 1;
let mut i = 0;
for j in 0..pivot_index {
if array[j] < array[pivot_index] {
array.swap(i, j);
i += 1;
}
}
array.swap(i, pivot_index);
i
}
```
这里的 `quick_sort` 函数使用分治法实现快速排序。如果数组长度大于1,则选择一个枢轴元素,将数组分成两个部分,其中一个部分包含小于枢轴元素的元素,另一个部分包含大于枢轴元素的元素。然后,递归地对每个部分进行排序。
`partition` 函数用于将数组分成两个部分。它将枢轴元素放在最后一个位置,并使用双指针算法将小于枢轴元素的元素移动到数组的左侧,大于枢轴元素的元素移动到数组的右侧。最后,它将枢轴元素插入到适当的位置,并返回该位置。
在主函数中,我们可以调用 `quick_sort` 函数来对数组进行排序:
```rust
fn main() {
let mut array = [5, 2, 8, 1, 9, 4, 3];
quick_sort(&mut array);
println!("{:?}", array);
}
```
输出结果为:`[1, 2, 3, 4, 5, 8, 9]`。
阅读全文