实现(第 1 部分)
Coddy 堆排序:数据结构与算法系列 课程的第 5 课,共 9 课。
我们将从堆排序的核心操作开始,逐步构建堆排序。
挑战
简单堆排序的核心是向下筛选操作。我们先来实现它。
编写一个名为 siftDown 的函数,接收一个数组 arr(将其视为二叉堆)和一个索引 i,并通过将该节点向下移动,恢复该节点的大顶堆性质。将该节点与它的两个子节点 2*i + 1 和 2*i + 2 进行比较;如果较大的子节点更大,就与它交换,并从该子节点的位置继续。返回数组。
例如,siftDown([1, 10, 5, 3, 2], 0) 会返回 [10, 3, 5, 1, 2]。
亲手试试
#include <stdlib.h>
int* siftDown(int* arr, int arr_size, int i, int* returnSize) {
// 在这里编写代码
*returnSize = arr_size;
return arr;
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
堆排序:数据结构与算法系列中的所有课
自己练习: C 在线编译器