Menu
CoddyTech

实现(第 2 部分)

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

现在,我们将构建堆和反复提取最大值结合起来。

challenge icon

挑战

中等

现在把所有内容组合起来,完成整个算法。

编写一个名为 heapSort 的函数,它接收一个整数数组,并按升序返回排序后的数组。

首先,从索引 n/2 - 1 到 0,对每个非叶节点执行下沉操作,构建一个最大堆。然后,反复将根节点(最大值)与堆的最后一个元素交换,将堆的大小缩小 1,再将新的根节点向下筛选。

使用一个接收当前堆 size 的下沉辅助函数,这样你就可以在过程中缩小堆。

亲手试试

#include <stdlib.h>

int* heapSort(int* arr, int arr_size, int* returnSize) {
    // 在这里编写代码
    *returnSize = arr_size;
    return arr;
}
quiz icon自我测试

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

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

自己练习: C 在线编译器