实现(第 2 部分)
Coddy 堆排序:数据结构与算法系列 课程的第 6 课,共 9 课。
现在,我们将构建堆和反复提取最大值结合起来。
挑战
中等现在把所有内容组合起来,完成整个算法。
编写一个名为 heapSort 的函数,它接收一个整数数组,并按升序返回排序后的数组。
首先,从索引 n/2 - 1 到 0,对每个非叶节点执行下沉操作,构建一个最大堆。然后,反复将根节点(最大值)与堆的最后一个元素交换,将堆的大小缩小 1,再将新的根节点向下筛选。
使用一个接收当前堆
size的下沉辅助函数,这样你就可以在过程中缩小堆。
亲手试试
#include <stdlib.h>
int* heapSort(int* arr, int arr_size, int* returnSize) {
// 在这里编写代码
*returnSize = arr_size;
return arr;
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
堆排序:数据结构与算法系列中的所有课
自己练习: C 在线编译器