第 10 题
对关键序列为{23,17,72,60,25,8,68,71,52}进行堆排序,输出两个最小关键字后的剩余堆是( )。
A. {23,72,60,25,68,71,52} B. {23,25,52,60,71,72,68} C. {71,23,25,60,72,68} D. {23,25,68,52,60,72,71}
[tag_link]
正确答案:D
首先,将关键序列 {23,17,72,60,25,8,68,71,52} 构建成最小堆。
构建过程如下:从最后一个非叶子节点开始向下调整,最终得到最小堆序列为 {8,17,23,52,25,72,68,71,60}。
输出第一个最小关键字 8:将堆顶 8 与最后一个元素 60 交换,移除 8,对剩余前 8 个元素调整堆,得到新堆 {17,25,23,52,60,72,68,71}。
输出第二个最小关键字 17:将堆顶 17 与最后一个元素 71 交换,移除 17,对剩余前 7 个元素调整堆,得到新堆 {23,25,68,52,60,72,71}。
因此,输出两个最小关键字后的剩余堆为 {23,25,68,52,60,72,71},对应选项 D。