diff --git a/codes/rust/chapter_sorting/merge_sort.rs b/codes/rust/chapter_sorting/merge_sort.rs
index 698af073..02894bd3 100644
--- a/codes/rust/chapter_sorting/merge_sort.rs
+++ b/codes/rust/chapter_sorting/merge_sort.rs
@@ -15,7 +15,7 @@ fn merge(nums: &mut [i32], left: usize, mid: usize, right: usize) {
// 当左右子数组都还有元素时,进行比较并将较小的元素复制到临时数组中
while i <= mid && j <= right {
if nums[i] <= nums[j] {
- tmp[k] = nums[j];
+ tmp[k] = nums[i];
i += 1;
} else {
tmp[k] = nums[j];
diff --git a/docs/chapter_appendix/index.md b/docs/chapter_appendix/index.md
index 55f077ee..44aa38a9 100644
--- a/docs/chapter_appendix/index.md
+++ b/docs/chapter_appendix/index.md
@@ -1,7 +1,3 @@
# 附录
-
-

-
-
diff --git a/docs/chapter_backtracking/index.md b/docs/chapter_backtracking/index.md
index cfaaba97..68b6a3ae 100644
--- a/docs/chapter_backtracking/index.md
+++ b/docs/chapter_backtracking/index.md
@@ -1,11 +1,7 @@
# 回溯
-
-

-
-
!!! abstract
我们如同迷宫中的探索者,在前进的道路上可能会遇到困难。
diff --git a/docs/chapter_computational_complexity/index.md b/docs/chapter_computational_complexity/index.md
index 7a3294d6..dcb3b499 100644
--- a/docs/chapter_computational_complexity/index.md
+++ b/docs/chapter_computational_complexity/index.md
@@ -1,11 +1,7 @@
# 复杂度分析
-
-

-
-
!!! abstract
复杂度分析犹如浩瀚的算法宇宙中的时空向导。
diff --git a/docs/chapter_computational_complexity/space_complexity.md b/docs/chapter_computational_complexity/space_complexity.md
index fb57dedd..fa8b1e66 100755
--- a/docs/chapter_computational_complexity/space_complexity.md
+++ b/docs/chapter_computational_complexity/space_complexity.md
@@ -790,7 +790,7 @@ $$

-### 常数阶 $O(1)$ {data-toc-label="常数阶"}
+### 常数阶 $O(1)$
常数阶常见于数量与输入数据大小 $n$ 无关的常量、变量、对象。
@@ -800,7 +800,7 @@ $$
[file]{space_complexity}-[class]{}-[func]{constant}
```
-### 线性阶 $O(n)$ {data-toc-label="线性阶"}
+### 线性阶 $O(n)$
线性阶常见于元素数量与 $n$ 成正比的数组、链表、栈、队列等:
@@ -816,7 +816,7 @@ $$

-### 平方阶 $O(n^2)$ {data-toc-label="平方阶"}
+### 平方阶 $O(n^2)$
平方阶常见于矩阵和图,元素数量与 $n$ 成平方关系:
@@ -832,7 +832,7 @@ $$

-### 指数阶 $O(2^n)$ {data-toc-label="指数阶"}
+### 指数阶 $O(2^n)$
指数阶常见于二叉树。观察下图,层数为 $n$ 的“满二叉树”的节点数量为 $2^n - 1$ ,占用 $O(2^n)$ 空间:
@@ -842,7 +842,7 @@ $$

-### 对数阶 $O(\log n)$ {data-toc-label="对数阶"}
+### 对数阶 $O(\log n)$
对数阶常见于分治算法。例如归并排序,输入长度为 $n$ 的数组,每轮递归将数组从中点处划分为两半,形成高度为 $\log n$ 的递归树,使用 $O(\log n)$ 栈帧空间。
diff --git a/docs/chapter_computational_complexity/time_complexity.md b/docs/chapter_computational_complexity/time_complexity.md
index 9589795c..e902eb7d 100755
--- a/docs/chapter_computational_complexity/time_complexity.md
+++ b/docs/chapter_computational_complexity/time_complexity.md
@@ -1033,7 +1033,7 @@ $$

-### 常数阶 $O(1)$ {data-toc-label="常数阶"}
+### 常数阶 $O(1)$
常数阶的操作数量与输入数据大小 $n$ 无关,即不随着 $n$ 的变化而变化。
@@ -1043,7 +1043,7 @@ $$
[file]{time_complexity}-[class]{}-[func]{constant}
```
-### 线性阶 $O(n)$ {data-toc-label="线性阶"}
+### 线性阶 $O(n)$
线性阶的操作数量相对于输入数据大小 $n$ 以线性级别增长。线性阶通常出现在单层循环中:
@@ -1059,7 +1059,7 @@ $$
值得注意的是,**输入数据大小 $n$ 需根据输入数据的类型来具体确定**。比如在第一个示例中,变量 $n$ 为输入数据大小;在第二个示例中,数组长度 $n$ 为数据大小。
-### 平方阶 $O(n^2)$ {data-toc-label="平方阶"}
+### 平方阶 $O(n^2)$
平方阶的操作数量相对于输入数据大小 $n$ 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层循环的时间复杂度都为 $O(n)$ ,因此总体的时间复杂度为 $O(n^2)$ :
@@ -1077,7 +1077,7 @@ $$
[file]{time_complexity}-[class]{}-[func]{bubble_sort}
```
-### 指数阶 $O(2^n)$ {data-toc-label="指数阶"}
+### 指数阶 $O(2^n)$
生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 $1$ 个细胞,分裂一轮后变为 $2$ 个,分裂两轮后变为 $4$ 个,以此类推,分裂 $n$ 轮后有 $2^n$ 个细胞。
@@ -1097,7 +1097,7 @@ $$
指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。
-### 对数阶 $O(\log n)$ {data-toc-label="对数阶"}
+### 对数阶 $O(\log n)$
与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 $n$ ,由于每轮缩减到一半,因此循环次数是 $\log_2 n$ ,即 $2^n$ 的反函数。
@@ -1127,7 +1127,7 @@ $$
也就是说,底数 $m$ 可以在不影响复杂度的前提下转换。因此我们通常会省略底数 $m$ ,将对数阶直接记为 $O(\log n)$ 。
-### 线性对数阶 $O(n \log n)$ {data-toc-label="线性对数阶"}
+### 线性对数阶 $O(n \log n)$
线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 $O(\log n)$ 和 $O(n)$ 。相关代码如下:
@@ -1141,7 +1141,7 @@ $$
主流排序算法的时间复杂度通常为 $O(n \log n)$ ,例如快速排序、归并排序、堆排序等。
-### 阶乘阶 $O(n!)$ {data-toc-label="阶乘阶"}
+### 阶乘阶 $O(n!)$
阶乘阶对应数学上的“全排列”问题。给定 $n$ 个互不重复的元素,求其所有可能的排列方案,方案数量为:
diff --git a/docs/chapter_data_structure/index.md b/docs/chapter_data_structure/index.md
index d4ade8f8..fb1dced5 100644
--- a/docs/chapter_data_structure/index.md
+++ b/docs/chapter_data_structure/index.md
@@ -1,11 +1,7 @@
# 数据结构
-
-

-
-
!!! abstract
数据结构如同一副稳固而多样的框架。
diff --git a/docs/chapter_divide_and_conquer/index.md b/docs/chapter_divide_and_conquer/index.md
index 1d828f09..5528a759 100644
--- a/docs/chapter_divide_and_conquer/index.md
+++ b/docs/chapter_divide_and_conquer/index.md
@@ -1,11 +1,7 @@
# 分治
-
-

-
-
!!! abstract
难题被逐层拆解,每一次的拆解都使它变得更为简单。
diff --git a/docs/chapter_dynamic_programming/index.md b/docs/chapter_dynamic_programming/index.md
index b27ede90..a5e0e585 100644
--- a/docs/chapter_dynamic_programming/index.md
+++ b/docs/chapter_dynamic_programming/index.md
@@ -1,11 +1,7 @@
# 动态规划
-
-

-
-
!!! abstract
小溪汇入河流,江河汇入大海。
diff --git a/docs/chapter_graph/index.md b/docs/chapter_graph/index.md
index 36f4036a..10318079 100644
--- a/docs/chapter_graph/index.md
+++ b/docs/chapter_graph/index.md
@@ -1,11 +1,7 @@
# 图
-
-

-
-
!!! abstract
在生命旅途中,我们就像是一个个节点,被无数看不见的边相连。
diff --git a/docs/chapter_greedy/index.md b/docs/chapter_greedy/index.md
index be2bc75b..69d9075b 100644
--- a/docs/chapter_greedy/index.md
+++ b/docs/chapter_greedy/index.md
@@ -1,11 +1,7 @@
# 贪心
-
-

-
-
!!! abstract
向日葵朝着太阳转动,时刻追求自身成长的最大可能。
diff --git a/docs/chapter_hashing/index.md b/docs/chapter_hashing/index.md
index 2adbcd7f..6d5b2528 100644
--- a/docs/chapter_hashing/index.md
+++ b/docs/chapter_hashing/index.md
@@ -1,11 +1,7 @@
# 哈希表
-
-

-
-
!!! abstract
在计算机世界中,哈希表如同一位聪慧的图书管理员。
diff --git a/docs/chapter_heap/index.md b/docs/chapter_heap/index.md
index ddb7c0ba..3aeb408e 100644
--- a/docs/chapter_heap/index.md
+++ b/docs/chapter_heap/index.md
@@ -1,11 +1,7 @@
# 堆
-
-

-
-
!!! abstract
堆就像是山岳峰峦,层叠起伏、形态各异。
diff --git a/docs/chapter_introduction/index.md b/docs/chapter_introduction/index.md
index adc44346..5d7839e2 100644
--- a/docs/chapter_introduction/index.md
+++ b/docs/chapter_introduction/index.md
@@ -1,11 +1,7 @@
# 初识算法
-
-

-
-
!!! abstract
一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。
diff --git a/docs/chapter_paperbook/index.assets/book_jd_link.jpg b/docs/chapter_paperbook/index.assets/book_jd_link.jpg
index a559f40b..3b8d8a58 100644
Binary files a/docs/chapter_paperbook/index.assets/book_jd_link.jpg and b/docs/chapter_paperbook/index.assets/book_jd_link.jpg differ
diff --git a/docs/chapter_paperbook/index.md b/docs/chapter_paperbook/index.md
index 3f1c5514..026cf162 100644
--- a/docs/chapter_paperbook/index.md
+++ b/docs/chapter_paperbook/index.md
@@ -54,7 +54,7 @@ status: new
## 购买链接
-如果你对纸质书感兴趣,可以考虑入手一本。我们为大家争取到了新书 5 折优惠,请见[此链接](https://3.cn/-1Wwj1jq)或扫描以下二维码:
+如果你对纸质书感兴趣,可以考虑入手一本。我们为大家争取到了新书 5 折优惠,请见[此链接](https://3.cn/1X-qmTD3)或扫描以下二维码:
{ class="animation-figure" }
diff --git a/docs/chapter_preface/index.md b/docs/chapter_preface/index.md
index 7366340d..60387c4c 100644
--- a/docs/chapter_preface/index.md
+++ b/docs/chapter_preface/index.md
@@ -1,11 +1,7 @@
# 前言
-
-

-
-
!!! abstract
算法犹如美妙的交响乐,每一行代码都像韵律般流淌。
diff --git a/docs/chapter_searching/index.md b/docs/chapter_searching/index.md
index 8619d00c..f473aaf8 100644
--- a/docs/chapter_searching/index.md
+++ b/docs/chapter_searching/index.md
@@ -1,11 +1,7 @@
# 搜索
-
-

-
-
!!! abstract
搜索是一场未知的冒险,我们或许需要走遍神秘空间的每个角落,又或许可以快速锁定目标。
diff --git a/docs/chapter_sorting/index.md b/docs/chapter_sorting/index.md
index 11d08325..41c7dece 100644
--- a/docs/chapter_sorting/index.md
+++ b/docs/chapter_sorting/index.md
@@ -1,11 +1,7 @@
# 排序
-
-

-
-
!!! abstract
排序犹如一把将混乱变为秩序的魔法钥匙,使我们能以更高效的方式理解与处理数据。
diff --git a/docs/chapter_stack_and_queue/index.md b/docs/chapter_stack_and_queue/index.md
index 08d4f8d3..ec053f82 100644
--- a/docs/chapter_stack_and_queue/index.md
+++ b/docs/chapter_stack_and_queue/index.md
@@ -1,11 +1,7 @@
# 栈与队列
-
-

-
-
!!! abstract
栈如同叠猫猫,而队列就像猫猫排队。
diff --git a/docs/chapter_tree/array_representation_of_tree.md b/docs/chapter_tree/array_representation_of_tree.md
index ad761934..87e077f1 100644
--- a/docs/chapter_tree/array_representation_of_tree.md
+++ b/docs/chapter_tree/array_representation_of_tree.md
@@ -12,7 +12,7 @@

-**映射公式的角色相当于链表中的引用**。给定数组中的任意一个节点,我们都可以通过映射公式来访问它的左(右)子节点。
+**映射公式的角色相当于链表中的节点引用(指针)**。给定数组中的任意一个节点,我们都可以通过映射公式来访问它的左(右)子节点。
## 表示任意二叉树
diff --git a/docs/chapter_tree/index.md b/docs/chapter_tree/index.md
index 2d3f2204..c12f050f 100644
--- a/docs/chapter_tree/index.md
+++ b/docs/chapter_tree/index.md
@@ -1,11 +1,7 @@
# 树
-
-

-
-
!!! abstract
参天大树充满生命力,根深叶茂,分枝扶疏。
diff --git a/en/docs/chapter_computational_complexity/index.md b/en/docs/chapter_computational_complexity/index.md
index 3bc923af..6ddc3421 100644
--- a/en/docs/chapter_computational_complexity/index.md
+++ b/en/docs/chapter_computational_complexity/index.md
@@ -1,11 +1,7 @@
# Complexity Analysis
-
-

-
-
!!! abstract
Complexity analysis is like a space-time navigator in the vast universe of algorithms.
diff --git a/en/docs/chapter_computational_complexity/space_complexity.md b/en/docs/chapter_computational_complexity/space_complexity.md
index 85f5f08d..229eaa31 100644
--- a/en/docs/chapter_computational_complexity/space_complexity.md
+++ b/en/docs/chapter_computational_complexity/space_complexity.md
@@ -736,7 +736,7 @@ $$

-### Constant Order $O(1)$ {data-toc-label="Constant Order"}
+### Constant Order $O(1)$
Constant order is common in constants, variables, objects that are independent of the size of input data $n$.
@@ -746,7 +746,7 @@ Note that memory occupied by initializing variables or calling functions in a lo
[file]{space_complexity}-[class]{}-[func]{constant}
```
-### Linear Order $O(n)$ {data-toc-label="Linear Order"}
+### Linear Order $O(n)$
Linear order is common in arrays, linked lists, stacks, queues, etc., where the number of elements is proportional to $n$:
@@ -762,7 +762,7 @@ As shown below, this function's recursive depth is $n$, meaning there are $n$ in

-### Quadratic Order $O(n^2)$ {data-toc-label="Quadratic Order"}
+### Quadratic Order $O(n^2)$
Quadratic order is common in matrices and graphs, where the number of elements is quadratic to $n$:
@@ -778,7 +778,7 @@ As shown below, the recursive depth of this function is $n$, and in each recursi

-### Exponential Order $O(2^n)$ {data-toc-label="Exponential Order"}
+### Exponential Order $O(2^n)$
Exponential order is common in binary trees. Observe the below image, a "full binary tree" with $n$ levels has $2^n - 1$ nodes, occupying $O(2^n)$ space:
@@ -788,7 +788,7 @@ Exponential order is common in binary trees. Observe the below image, a "full bi

-### Logarithmic Order $O(\log n)$ {data-toc-label="Logarithmic Order"}
+### Logarithmic Order $O(\log n)$
Logarithmic order is common in divide-and-conquer algorithms. For example, in merge sort, an array of length $n$ is recursively divided in half each round, forming a recursion tree of height $\log n$, using $O(\log n)$ stack frame space.
diff --git a/en/docs/chapter_computational_complexity/time_complexity.md b/en/docs/chapter_computational_complexity/time_complexity.md
index 549d1d7b..cb75e90e 100644
--- a/en/docs/chapter_computational_complexity/time_complexity.md
+++ b/en/docs/chapter_computational_complexity/time_complexity.md
@@ -962,7 +962,7 @@ $$

-### Constant Order $O(1)$ {data-toc-label="Constant Order"}
+### Constant Order $O(1)$
Constant order means the number of operations is independent of the input data size $n$. In the following function, although the number of operations `size` might be large, the time complexity remains $O(1)$ as it's unrelated to $n$:
@@ -970,7 +970,7 @@ Constant order means the number of operations is independent of the input data s
[file]{time_complexity}-[class]{}-[func]{constant}
```
-### Linear Order $O(n)$ {data-toc-label="Linear Order"}
+### Linear Order $O(n)$
Linear order indicates the number of operations grows linearly with the input data size $n$. Linear order commonly appears in single-loop structures:
@@ -986,7 +986,7 @@ Operations like array traversal and linked list traversal have a time complexity
It's important to note that **the input data size $n$ should be determined based on the type of input data**. For example, in the first example, $n$ represents the input data size, while in the second example, the length of the array $n$ is the data size.
-### Quadratic Order $O(n^2)$ {data-toc-label="Quadratic Order"}
+### Quadratic Order $O(n^2)$
Quadratic order means the number of operations grows quadratically with the input data size $n$. Quadratic order typically appears in nested loops, where both the outer and inner loops have a time complexity of $O(n)$, resulting in an overall complexity of $O(n^2)$:
@@ -1004,7 +1004,7 @@ For instance, in bubble sort, the outer loop runs $n - 1$ times, and the inner l
[file]{time_complexity}-[class]{}-[func]{bubble_sort}
```
-### Exponential Order $O(2^n)$ {data-toc-label="Exponential Order"}
+### Exponential Order $O(2^n)$
Biological "cell division" is a classic example of exponential order growth: starting with one cell, it becomes two after one division, four after two divisions, and so on, resulting in $2^n$ cells after $n$ divisions.
@@ -1024,7 +1024,7 @@ In practice, exponential order often appears in recursive functions. For example
Exponential order growth is extremely rapid and is commonly seen in exhaustive search methods (brute force, backtracking, etc.). For large-scale problems, exponential order is unacceptable, often requiring dynamic programming or greedy algorithms as solutions.
-### Logarithmic Order $O(\log n)$ {data-toc-label="Logarithmic Order"}
+### Logarithmic Order $O(\log n)$
In contrast to exponential order, logarithmic order reflects situations where "the size is halved each round." Given an input data size $n$, since the size is halved each round, the number of iterations is $\log_2 n$, the inverse function of $2^n$.
@@ -1054,7 +1054,7 @@ Logarithmic order is typical in algorithms based on the divide-and-conquer strat
This means the base $m$ can be changed without affecting the complexity. Therefore, we often omit the base $m$ and simply denote logarithmic order as $O(\log n)$.
-### Linear-Logarithmic Order $O(n \log n)$ {data-toc-label="Linear-Logarithmic Order"}
+### Linear-Logarithmic Order $O(n \log n)$
Linear-logarithmic order often appears in nested loops, with the complexities of the two loops being $O(\log n)$ and $O(n)$ respectively. The related code is as follows:
@@ -1068,7 +1068,7 @@ The image below demonstrates how linear-logarithmic order is generated. Each lev
Mainstream sorting algorithms typically have a time complexity of $O(n \log n)$, such as quicksort, mergesort, and heapsort.
-### Factorial Order $O(n!)$ {data-toc-label="Factorial Order"}
+### Factorial Order $O(n!)$
Factorial order corresponds to the mathematical problem of "full permutation." Given $n$ distinct elements, the total number of possible permutations is:
diff --git a/en/docs/chapter_data_structure/index.md b/en/docs/chapter_data_structure/index.md
index a5d3d8c1..ef69156b 100644
--- a/en/docs/chapter_data_structure/index.md
+++ b/en/docs/chapter_data_structure/index.md
@@ -1,11 +1,7 @@
# Data Structures
-
-

-
-
!!! abstract
Data structures serve as a robust and diverse framework.
diff --git a/en/docs/chapter_hashing/index.md b/en/docs/chapter_hashing/index.md
index 260166b1..7f32ef50 100644
--- a/en/docs/chapter_hashing/index.md
+++ b/en/docs/chapter_hashing/index.md
@@ -1,11 +1,7 @@
# Hash Table
-
-

-
-
!!! abstract
In the world of computing, a hash table is akin to an intelligent librarian.
diff --git a/en/docs/chapter_introduction/index.md b/en/docs/chapter_introduction/index.md
index e85a23b3..54ec7d0b 100644
--- a/en/docs/chapter_introduction/index.md
+++ b/en/docs/chapter_introduction/index.md
@@ -1,11 +1,7 @@
# Introduction to Algorithms
-
-

-
-
!!! abstract
A graceful maiden dances, intertwined with the data, her skirt swaying to the melody of algorithms.
diff --git a/en/docs/chapter_preface/index.md b/en/docs/chapter_preface/index.md
index 94d803cf..332d997c 100644
--- a/en/docs/chapter_preface/index.md
+++ b/en/docs/chapter_preface/index.md
@@ -1,11 +1,7 @@
# Preface
-
-

-
-
!!! abstract
Algorithms are like a beautiful symphony, with each line of code flowing like a rhythm.
diff --git a/en/docs/chapter_stack_and_queue/index.md b/en/docs/chapter_stack_and_queue/index.md
index d1d0e16e..0a730ee7 100644
--- a/en/docs/chapter_stack_and_queue/index.md
+++ b/en/docs/chapter_stack_and_queue/index.md
@@ -1,11 +1,7 @@
# Stack and Queue
-
-

-
-
!!! abstract
A stack is like cats placed on top of each other, while a queue is like cats lined up one by one.