4. 设待排序数据的关键字序列为{49,54,60,75,36,93,27},回答以下问题: (1) 写出创建大顶堆的一趟初始建堆的过程,要求写出中间步骤。 (2) 堆排序采用何种存储结构?是否稳定的排序方法? (3) 如果要降序排列全部数据,需要创建大顶堆还是小顶堆?
时间: 2024-03-31 07:34:12 浏览: 65
1. 创建大顶堆的一趟初始建堆的过程如下:
初始序列:{49,54,60,75,36,93,27}
(1) 从最后一个非叶子节点开始,向下遍历每个子树,如果子树的根节点小于其子节点,则交换根节点和最大的子节点。
步骤1后:{49,54,93,75,36,60,27}
(2) 继续向上遍历每个子树,重复步骤1,直到根节点。
步骤2后:{93,75,54,49,36,60,27}
经过以上两个步骤,初始序列被初始化为一个大顶堆。
2. 堆排序采用的存储结构为数组。堆排序是一种不稳定的排序方法,因为在堆调整的过程中,存在交换相同关键字的情况。
3. 如果要降序排列全部数据,需要创建小顶堆。因为小顶堆的根节点是这个堆中的最小值,而我们希望将最小值放在序列的末尾,所以我们需要创建一个小顶堆,每次取出堆顶元素(最小值)并放到序列的末尾,然后对剩下的元素重新建立小顶堆,如此重复直至序列有序。
阅读全文