This commit is contained in:
krahets
2023-08-22 13:50:12 +08:00
parent 0c9bf14e20
commit 92a0853ab8
64 changed files with 478 additions and 479 deletions
+2 -2
View File
@@ -17,7 +17,7 @@ comments: true
## 11.7.1   算法流程
设数组的长度为 $n$ ,堆排序的流程如图所示。
设数组的长度为 $n$ ,堆排序的流程如图 11-12 所示。
1. 输入数组并建立大顶堆。完成后,最大元素位于堆顶。
2. 将堆顶元素(第一个元素)与堆底元素(最后一个元素)交换。完成交换后,堆的长度减 $1$ ,已排序元素数量加 $1$ 。
@@ -64,7 +64,7 @@ comments: true
=== "<12>"
![heap_sort_step12](heap_sort.assets/heap_sort_step12.png)
<p align="center"> 图堆排序步骤 </p>
<p align="center"> 图 11-12 &nbsp; 堆排序步骤 </p>
在代码实现中,我们使用了与堆章节相同的从顶至底堆化 `sift_down()` 函数。值得注意的是,由于堆的长度会随着提取最大元素而减小,因此我们需要给 `sift_down()` 函数添加一个长度参数 $n$ ,用于指定堆的当前有效长度。