打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
9.8 归并排序

9.8 归并排序

前面我们讲了堆排序,因为它用到了完全二叉树,充分利用了完全二叉树的深度是.log2n.+1的特性,所以效率比较高。不过堆结构的设计本身是比较复杂的,老实说,能想出这样的结构就挺不容易,有没有更直接简单的办法利用完全二叉树来排序呢?当然有。

先来举一个例子。你们知道高考一本、二本、专科分数线是如何划分出来的吗?

简单地说,如果各高校本科专业在某省高三理科学生中计划招收1万名,那么将全省参加高考的理科学生分数倒排序,第1万名的总分数就是当年本科生的分数线(现实可能会比这复杂,这里简化之)。也就是说,即使你是你们班级第一、甚至年级第一名,如果你没有上分数线,则说明你的成绩排不到全省前1万名,你也就基本失去了当年上本科的机会了。

换句话说,所谓的全省排名,其实也就是每个市、每个县、每个学校、每个班级的排名合并后再排名得到的。注意我这里用到了合并一词。

注:6 关于堆排序算法更详细讲解,请参考《算法导论》第二部分第六章“堆排序”的内容。

我们要比较两个学生的成绩高低是很容易的,比如甲比乙分数低,丙比丁分数低。那么我们也就可以很容易得到甲乙丙丁合并后的成绩排名,同样的,戊己庚辛的排名也容易得到,由于他们两组分别有序了,把他们八个学生成绩合并有序也是很容易做到的了,继续下去……最终完成全省学生的成绩排名,此时高考状元也就诞生了。

为了更清晰地说清楚这里的思想,大家来看图9‐8‐1所示,我们将本是无序的数组序列{16,7,13,10,9,15,3,2,5,8,12,1,11,4,6,14},通过两两合并排序后再合并,最终获得了一个有序的数组。注意仔细观察它的形状,你会发现,它像极了一棵倒置的完全二叉树,通常涉及到完全二叉树结构的排序算法,效率一般都不低的——这就是我们要讲的归并排序法。

(点击查看大图)图9-8-1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【高考过来人原创 】志愿填报大神的独家估分经验
寻找自己的达芬奇密码(下)
独家!一模成绩全省排名查询限时开放!你的一模成绩对应什么大学?一模考后分析、目标定位
2018郑州高三一模分数线公布,教你把分数换算乘全省位次!
成都只有244人,实现“高中自由”!“死亡分数”620/600/590,该何去何从?
一分一段表咋用? 手把手教你如何填志愿!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服