diff --git a/codes/c/chapter_computational_complexity/space_complexity.c b/codes/c/chapter_computational_complexity/space_complexity.c index 2c9df0eec..add3d8465 100644 --- a/codes/c/chapter_computational_complexity/space_complexity.c +++ b/codes/c/chapter_computational_complexity/space_complexity.c @@ -3,6 +3,7 @@ * Created Time: 2023-04-15 * Author: Gonglja (glj0@outlook.com) */ + #include "../utils/common.h" /* 函数 */ diff --git a/docs/chapter_data_structure/number_encoding.md b/docs/chapter_data_structure/number_encoding.md index e54c309f2..4296b2a1e 100644 --- a/docs/chapter_data_structure/number_encoding.md +++ b/docs/chapter_data_structure/number_encoding.md @@ -43,8 +43,10 @@ $$ 另一方面,**数字零的原码有 $+0$ 和 $-0$ 两种表示方式**。这意味着数字零对应着两个不同的二进制编码,而这可能会带来歧义问题。例如,在条件判断中,如果没有区分正零和负零,可能会导致错误的判断结果。如果我们想要处理正零和负零歧义,则需要引入额外的判断操作,其可能会降低计算机的运算效率。 $$ -+0 = 0000 \space 0000 \newline --0 = 1000 \space 0000 +\begin{aligned} ++0 & = 0000 \space 0000 \newline +-0 & = 1000 \space 0000 +\end{aligned} $$ 与原码一样,反码也存在正负零歧义问题。为此,计算机进一步引入了「补码」。那么,补码有什么作用呢?我们先来分析一下负零的补码的计算过程: diff --git a/docs/chapter_sorting/heap_sort.md b/docs/chapter_sorting/heap_sort.md index 0c3a0c7f9..6544a4c1e 100644 --- a/docs/chapter_sorting/heap_sort.md +++ b/docs/chapter_sorting/heap_sort.md @@ -7,10 +7,13 @@ 「堆排序 Heap Sort」是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序: 1. 输入数组并建立小顶堆,此时最小元素位于堆顶。 -2. 初始化一个数组 `res` ,用于存储排序结果。 -3. 循环执行 $n$ 轮出堆操作,并依次将出堆元素记录至 `res` ,即可得到从小到大排序的序列。 +2. 不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。 -该方法虽然可行,但需要借助一个额外数组,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。设数组的长度为 $n$ ,堆排序的流程如下: +以上方法虽然可行,但需要借助一个额外数组来保存弹出的元素,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。 + +## 算法流程 + +设数组的长度为 $n$ ,堆排序的流程如下: 1. 输入数组并建立大顶堆。完成后,最大元素位于堆顶。 2. 将堆顶元素(第一个元素)与堆底元素(最后一个元素)交换。完成交换后,堆的长度减 $1$ ,已排序元素数量加 $1$ 。 @@ -139,6 +142,6 @@ ## 算法特性 -- **时间复杂度 $O(n \log n)$ 、非自适应排序** :从堆中提取最大元素的时间复杂度为 $O(\log n)$ ,共循环 $n - 1$ 轮。 +- **时间复杂度 $O(n \log n)$ 、非自适应排序** :建堆操作使用 $O(n)$ 时间。从堆中提取最大元素的时间复杂度为 $O(\log n)$ ,共循环 $n - 1$ 轮。 - **空间复杂度 $O(1)$ 、原地排序** :几个指针变量使用 $O(1)$ 空间。元素交换和堆化操作都是在原数组上进行的。 - **非稳定排序**:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化。 diff --git a/mkdocs.yml b/mkdocs.yml index 83d96fcf2..f3ae2b6fd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -137,7 +137,7 @@ nav: - 2.2.   时间复杂度: chapter_computational_complexity/time_complexity.md - 2.3.   空间复杂度: chapter_computational_complexity/space_complexity.md - 2.4.   小结: chapter_computational_complexity/summary.md - - 3.     数据结构与类型: + - 3.     数据结构简介: - 3.1.   数据结构分类: chapter_data_structure/classification_of_data_structure.md - 3.2.   基本数据类型: chapter_data_structure/basic_data_types.md - 3.3.   数字编码 *: chapter_data_structure/number_encoding.md