UDN-企业互联网技术人气社区

板块导航

浏览  : 1433
回复  : 7

[面试经历] 今天的2016阿里C/C++笔试题

[复制链接]
Fly_Think的头像 楼主
发表于 2015-9-15 18:25:06 | 显示全部楼层 |阅读模式
将整数数组(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
发表于 2015-9-15 19:34:46 | 显示全部楼层

C
使用道具 举报

回复

发表于 2015-9-15 20:34:01 | 显示全部楼层

第一轮排序结束,即选出了第二大元素,且第一大的元素已经放至堆的最后。   所以只能从B、C中选,然后根据前6个元素是否满足最大堆的性质,选择C。
使用道具 举报

回复

发表于 2015-9-15 21:48:43 | 显示全部楼层

2,7交换,重新调整堆。结果为6532417.
使用道具 举报

回复

发表于 2015-9-15 23:51:29 | 显示全部楼层

原来是这样啊。。一开始就是一个OK的顺序。。7放到最后,2提上去,,重新拍啊哈哈
使用道具 举报

回复

发表于 2015-9-16 02:39:24 | 显示全部楼层

第一轮排序结束之后,应该是选出了 最小的元素啊,最小元素在堆顶,那应该选D
使用道具 举报

回复

发表于 2015-9-16 04:48:36 | 显示全部楼层

交换2和7    层次遍历的顺序为  6 5  3 2 4 1 7 所以答案选C
使用道具 举报

回复

发表于 2015-9-16 06:31:58 | 显示全部楼层

数组在一开始的时候已经是最大堆排序好的,第一轮中,我们只需要把堆顶元素与堆的最后一个元素进行交换,然后按照最大堆重新构建,即可以得到答案C
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部