您的位置:首页 > 其它

按照堆排序的方式原地进行升序排列

2017-04-24 20:20 579 查看
题目:将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束后,数组的顺序是()

A.2-6-3-5-4-1-7

B.6-2-3-5-4-1-7

C.6-5-3-2-4-1-7

D.1-5-3-2-4-6-7

E.5-4-3-2-1-6-7

F.5-1-3-2-4-6-7

答案:C

解析:因为是原地进行升序排列,所以应该是建立大根堆;如果是原地进行降序排列,应该建立小根堆。

第一步:先建立大根堆,因为给定的数组就是大根堆,所以就不需要建立大根堆了。大根堆图如下:



第二步:堆建好之后开始排序,堆顶就是最大值,取出放入数组中的最后一个位置,将堆底(数组中的最后一个元素)放入堆顶。因为这一操作会破坏堆,需要将前n-1个元素调整为堆。这样一轮排序就结束了。



调整为大根堆之后:



所以在第一轮排序结束后,数组的顺序是:6-5-3-2-4-1-7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐