Bug fixes and improvements (#1133)

* Bug fixes

* Update the figure of the JD link

* Unify the code comments of insertion_sort
This commit is contained in:
Yudong Jin 2024-03-14 20:01:16 +08:00 committed by GitHub
parent eadf4c86d4
commit 01c67781fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 23 additions and 23 deletions

View file

@ -8,10 +8,10 @@
/* 插入排序 */ /* 插入排序 */
void insertionSort(int nums[], int size) { void insertionSort(int nums[], int size) {
// 外循环:已排序元素数量为 1, 2, ..., n // 外循环:已排序区间为 [0, i-1]
for (int i = 1; i < size; i++) { for (int i = 1; i < size; i++) {
int base = nums[i], j = i - 1; int base = nums[i], j = i - 1;
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
// 将 nums[j] 向右移动一位 // 将 nums[j] 向右移动一位
nums[j + 1] = nums[j]; nums[j + 1] = nums[j];

View file

@ -8,10 +8,10 @@
/* 插入排序 */ /* 插入排序 */
void insertionSort(vector<int> &nums) { void insertionSort(vector<int> &nums) {
// 外循环:已排序元素数量为 1, 2, ..., n // 外循环:已排序区间为 [0, i-1]
for (int i = 1; i < nums.size(); i++) { for (int i = 1; i < nums.size(); i++) {
int base = nums[i], j = i - 1; int base = nums[i], j = i - 1;
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位 nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位
j--; j--;

View file

@ -9,10 +9,10 @@ namespace hello_algo.chapter_sorting;
public class insertion_sort { public class insertion_sort {
/* 插入排序 */ /* 插入排序 */
void InsertionSort(int[] nums) { void InsertionSort(int[] nums) {
// 外循环:已排序元素数量为 1, 2, ..., n // 外循环:已排序区间为 [0, i-1]
for (int i = 1; i < nums.Length; i++) { for (int i = 1; i < nums.Length; i++) {
int bas = nums[i], j = i - 1; int bas = nums[i], j = i - 1;
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > bas) { while (j >= 0 && nums[j] > bas) {
nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位 nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位
j--; j--;

View file

@ -6,10 +6,10 @@
/* 插入排序 */ /* 插入排序 */
void insertionSort(List<int> nums) { void insertionSort(List<int> nums) {
// 1, 2, ..., n // [0, i-1]
for (int i = 1; i < nums.length; i++) { for (int i = 1; i < nums.length; i++) {
int base = nums[i], j = i - 1; int base = nums[i], j = i - 1;
// base // base [0, i-1]
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // nums[j] nums[j + 1] = nums[j]; // nums[j]
j--; j--;

View file

@ -10,7 +10,7 @@ func insertionSort(nums []int) {
for i := 1; i < len(nums); i++ { for i := 1; i < len(nums); i++ {
base := nums[i] base := nums[i]
j := i - 1 j := i - 1
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
for j >= 0 && nums[j] > base { for j >= 0 && nums[j] > base {
nums[j+1] = nums[j] // 将 nums[j] 向右移动一位 nums[j+1] = nums[j] // 将 nums[j] 向右移动一位
j-- j--

View file

@ -11,10 +11,10 @@ import java.util.*;
public class insertion_sort { public class insertion_sort {
/* 插入排序 */ /* 插入排序 */
static void insertionSort(int[] nums) { static void insertionSort(int[] nums) {
// 外循环已排序元素数量为 1, 2, ..., n // 外循环已排序区间为 [0, i-1]
for (int i = 1; i < nums.length; i++) { for (int i = 1; i < nums.length; i++) {
int base = nums[i], j = i - 1; int base = nums[i], j = i - 1;
// 内循环 base 插入到已排序部分的正确位置 // 内循环 base 插入到已排序区间 [0, i-1] 的正确位置
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // nums[j] 向右移动一位 nums[j + 1] = nums[j]; // nums[j] 向右移动一位
j--; j--;

View file

@ -6,11 +6,11 @@
/* 插入排序 */ /* 插入排序 */
function insertionSort(nums) { function insertionSort(nums) {
// 外循环:已排序元素数量为 1, 2, ..., n // 外循环:已排序区间为 [0, i-1]
for (let i = 1; i < nums.length; i++) { for (let i = 1; i < nums.length; i++) {
let base = nums[i], let base = nums[i],
j = i - 1; j = i - 1;
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位 nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位
j--; j--;

View file

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

View file

@ -6,11 +6,11 @@
/* */ /* */
func insertionSort(nums: inout [Int]) { func insertionSort(nums: inout [Int]) {
// 1, 2, ..., n // [0, i-1]
for i in stride(from: 1, to: nums.count, by: 1) { for i in stride(from: 1, to: nums.count, by: 1) {
let base = nums[i] let base = nums[i]
var j = i - 1 var j = i - 1
// base // base [0, i-1]
while j >= 0, nums[j] > base { while j >= 0, nums[j] > base {
nums[j + 1] = nums[j] // nums[j] nums[j + 1] = nums[j] // nums[j]
j -= 1 j -= 1

View file

@ -6,11 +6,11 @@
/* 插入排序 */ /* 插入排序 */
function insertionSort(nums: number[]): void { function insertionSort(nums: number[]): void {
// 外循环:已排序元素数量为 1, 2, ..., n // 外循环:已排序区间为 [0, i-1]
for (let i = 1; i < nums.length; i++) { for (let i = 1; i < nums.length; i++) {
const base = nums[i]; const base = nums[i];
let j = i - 1; let j = i - 1;
// 内循环:将 base 插入到已排序部分的正确位置 // 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > base) { while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位 nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位
j--; j--;

View file

@ -7,12 +7,12 @@ const inc = @import("include");
// //
fn insertionSort(nums: []i32) void { fn insertionSort(nums: []i32) void {
// 1, 2, ..., n // [0, i-1]
var i: usize = 1; var i: usize = 1;
while (i < nums.len) : (i += 1) { while (i < nums.len) : (i += 1) {
var base = nums[i]; var base = nums[i];
var j: usize = i; var j: usize = i;
// base // base [0, i-1]
while (j >= 1 and nums[j - 1] > base) : (j -= 1) { while (j >= 1 and nums[j - 1] > base) : (j -= 1) {
nums[j] = nums[j - 1]; // nums[j] nums[j] = nums[j - 1]; // nums[j]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View file

@ -62,6 +62,6 @@ status: new
起初,我低估了纸质书出版的工作量,以为只要维护好了开源项目,纸质版就可以通过某些自动化手段生成出来。实践证明,纸质书的生产流程与开源项目的更新机制存在很大的不同,两者之间的转化需要做许多额外工作。 起初,我低估了纸质书出版的工作量,以为只要维护好了开源项目,纸质版就可以通过某些自动化手段生成出来。实践证明,纸质书的生产流程与开源项目的更新机制存在很大的不同,两者之间的转化需要做许多额外工作。
一本书的初稿与达到出版标准的定稿之间仍有较长距离,需要出版社(策划、编辑、设计、市场等)与作者的通力合作、长期雕琢。在此,在此感谢图灵策划编辑王军花、以及人民邮电出版社和图灵社区每位参与本书出版流程的工作人员! 一本书的初稿与达到出版标准的定稿之间仍有较长距离,需要出版社(策划、编辑、设计、市场等)与作者的通力合作、长期雕琢。在此感谢图灵策划编辑王军花、以及人民邮电出版社和图灵社区每位参与本书出版流程的工作人员!
希望这本书能够帮助到你! 希望这本书能够帮助到你!

View file

@ -38,7 +38,7 @@
que.append(4) que.append(4)
# 访问队首元素 # 访问队首元素
front: int = que[0]; front: int = que[0]
# 元素出队 # 元素出队
pop: int = que.popleft() pop: int = que.popleft()