mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-24 10:06:28 +08:00
Polish some texts.
This commit is contained in:
parent
b39e79be85
commit
fb72aa385e
4 changed files with 13 additions and 7 deletions
|
@ -3,6 +3,7 @@
|
|||
* Created Time: 2023-04-15
|
||||
* Author: Gonglja (glj0@outlook.com)
|
||||
*/
|
||||
|
||||
#include "../utils/common.h"
|
||||
|
||||
/* 函数 */
|
||||
|
|
|
@ -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}
|
||||
$$
|
||||
|
||||
与原码一样,反码也存在正负零歧义问题。为此,计算机进一步引入了「补码」。那么,补码有什么作用呢?我们先来分析一下负零的补码的计算过程:
|
||||
|
|
|
@ -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)$ 空间。元素交换和堆化操作都是在原数组上进行的。
|
||||
- **非稳定排序**:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化。
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue