Menu
CoddyTech

实现(第 1 部分)

Coddy 堆排序:数据结构与算法系列 课程的第 5 课,共 9 课。

我们将从堆排序的核心操作开始,逐步构建堆排序。

challenge icon

挑战

简单

堆排序的核心是向下筛选操作。我们先来实现它。

编写一个名为 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;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

堆排序:数据结构与算法系列中的所有课

自己练习: C 在线编译器