1、冒泡排序
fn bubble_sort(arr: &mut [i32]) {
let ln = arr.len();
for i in 0..ln {
for j in 0..ln - i - 1 {
if arr[j] > arr[j + 1] {
arr.swap(j, j + 1);
}
}
}
}
2、选择排序
fn select_sort(arr: &mut [i32]) {
for i in 0..arr.len() {
let mut min_index = i;
for j in i + 1..arr.len() {
if arr[j] < arr[min_index] {
min_index = j;
}
}
if min_index != i {
arr.swap(min_index, i)
}
}
}
3、插入排序
fn insert_sort(arr: &mut [i32]) {
for i in 0..arr.len() {
let mut j = i;
while j > 0 && arr[j - 1] > arr[j] {
arr.swap(j - 1, j);
j -= 1;
}
}
}
4、快速排序
fn partition(arr: &mut [i32]) -> usize {
let pivot_idx = arr.len() - 1;
let mut i = 0;
for j in 0..pivot_idx {
if arr[j] < arr[pivot_idx] {
arr.swap(i, j);
i += 1;
}
}
arr.swap(i, pivot_idx);
i
}
fn quick_sort(arr: &mut [i32]) {
if arr.len() > 1 {
let pivot = partition(arr);
quick_sort(&mut arr[..pivot]);
quick_sort(&mut arr[pivot + 1..]);
}
}