Polish some texts.

pull/518/head
krahets 2 years ago
parent b39e79be85
commit fb72aa385e

@ -3,6 +3,7 @@
* Created Time: 2023-04-15 * Created Time: 2023-04-15
* Author: Gonglja (glj0@outlook.com) * Author: Gonglja (glj0@outlook.com)
*/ */
#include "../utils/common.h" #include "../utils/common.h"
/* 函数 */ /* 函数 */

@ -43,8 +43,10 @@ $$
另一方面,**数字零的原码有 $+0$ 和 $-0$ 两种表示方式**。这意味着数字零对应着两个不同的二进制编码,而这可能会带来歧义问题。例如,在条件判断中,如果没有区分正零和负零,可能会导致错误的判断结果。如果我们想要处理正零和负零歧义,则需要引入额外的判断操作,其可能会降低计算机的运算效率。 另一方面,**数字零的原码有 $+0$ 和 $-0$ 两种表示方式**。这意味着数字零对应着两个不同的二进制编码,而这可能会带来歧义问题。例如,在条件判断中,如果没有区分正零和负零,可能会导致错误的判断结果。如果我们想要处理正零和负零歧义,则需要引入额外的判断操作,其可能会降低计算机的运算效率。
$$ $$
+0 = 0000 \space 0000 \newline \begin{aligned}
-0 = 1000 \space 0000 +0 & = 0000 \space 0000 \newline
-0 & = 1000 \space 0000
\end{aligned}
$$ $$
与原码一样,反码也存在正负零歧义问题。为此,计算机进一步引入了「补码」。那么,补码有什么作用呢?我们先来分析一下负零的补码的计算过程: 与原码一样,反码也存在正负零歧义问题。为此,计算机进一步引入了「补码」。那么,补码有什么作用呢?我们先来分析一下负零的补码的计算过程:

@ -7,10 +7,13 @@
「堆排序 Heap Sort」是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序 「堆排序 Heap Sort」是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序
1. 输入数组并建立小顶堆,此时最小元素位于堆顶。 1. 输入数组并建立小顶堆,此时最小元素位于堆顶。
2. 初始化一个数组 `res` ,用于存储排序结果。 2. 不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。
3. 循环执行 $n$ 轮出堆操作,并依次将出堆元素记录至 `res` ,即可得到从小到大排序的序列。
该方法虽然可行,但需要借助一个额外数组,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。设数组的长度为 $n$ ,堆排序的流程如下: 以上方法虽然可行,但需要借助一个额外数组来保存弹出的元素,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。
## 算法流程
设数组的长度为 $n$ ,堆排序的流程如下:
1. 输入数组并建立大顶堆。完成后,最大元素位于堆顶。 1. 输入数组并建立大顶堆。完成后,最大元素位于堆顶。
2. 将堆顶元素(第一个元素)与堆底元素(最后一个元素)交换。完成交换后,堆的长度减 $1$ ,已排序元素数量加 $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)$ 空间。元素交换和堆化操作都是在原数组上进行的。 - **空间复杂度 $O(1)$ 、原地排序** :几个指针变量使用 $O(1)$ 空间。元素交换和堆化操作都是在原数组上进行的。
- **非稳定排序**:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化。 - **非稳定排序**:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化。

@ -137,7 +137,7 @@ nav:
- 2.2.   时间复杂度: chapter_computational_complexity/time_complexity.md - 2.2.   时间复杂度: chapter_computational_complexity/time_complexity.md
- 2.3.   空间复杂度: chapter_computational_complexity/space_complexity.md - 2.3.   空间复杂度: chapter_computational_complexity/space_complexity.md
- 2.4.   小结: chapter_computational_complexity/summary.md - 2.4.   小结: chapter_computational_complexity/summary.md
- 3.     数据结构与类型: - 3.     数据结构简介:
- 3.1.   数据结构分类: chapter_data_structure/classification_of_data_structure.md - 3.1.   数据结构分类: chapter_data_structure/classification_of_data_structure.md
- 3.2.   基本数据类型: chapter_data_structure/basic_data_types.md - 3.2.   基本数据类型: chapter_data_structure/basic_data_types.md
- 3.3.   数字编码 *: chapter_data_structure/number_encoding.md - 3.3.   数字编码 *: chapter_data_structure/number_encoding.md

Loading…
Cancel
Save