Update the comments of bubble sort

and insertion sort
This commit is contained in:
krahets
2023-05-22 23:05:37 +08:00
parent 5b406666d8
commit f6d290d903
36 changed files with 119 additions and 119 deletions

View File

@ -8,9 +8,9 @@ include!("../include/include.rs");
/* 冒泡排序 */
fn bubble_sort(nums: &mut [i32]) {
// 外循环:排序元素数量为 n-1, n-2, ..., 1
// 外循环:排序区间为 [0, i]
for i in (1..nums.len()).rev() {
// 内循环:冒泡操作
// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
for j in 0..i {
if nums[j] > nums[j + 1] {
// 交换 nums[j] 与 nums[j + 1]
@ -24,10 +24,10 @@ fn bubble_sort(nums: &mut [i32]) {
/* 冒泡排序(标志优化) */
fn bubble_sort_with_flag(nums: &mut [i32]) {
// 外循环:排序元素数量为 n-1, n-2, ..., 1
// 外循环:排序区间为 [0, i]
for i in (1..nums.len()).rev() {
let mut flag = false; // 初始化标志位
// 内循环:冒泡操作
// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
for j in 0..i {
if nums[j] > nums[j + 1] {
// 交换 nums[j] 与 nums[j + 1]

View File

@ -8,15 +8,15 @@ include!("../include/include.rs");
/*插入排序 */
fn insertion_sort(nums: &mut [i32]) {
// 外循环:base = nums[1], nums[2], ..., nums[n-1]
// 外循环:已排序元素数量为 1, 2, ..., n
for i in 1..nums.len() {
let (base, mut j) = (nums[i], (i - 1) as i32);
// 内循环:将 base 插入到左边的正确位置
// 内循环:将 base 插入到已排序部分的正确位置
while j >= 0 && nums[j as usize] > base {
nums[(j + 1) as usize] = nums[j as usize]; // 1. 将 nums[j] 向右移动一位
nums[(j + 1) as usize] = nums[j as usize]; // 将 nums[j] 向右移动一位
j -= 1;
}
nums[(j + 1) as usize] = base; // 2. 将 base 赋值到正确位置
nums[(j + 1) as usize] = base; // 将 base 赋值到正确位置
}
}