2.3排序问题 学案(北师大版必修3).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.3排序问题 学案(北师大版必修3).doc

第四课时 2.3 排序问题 学习重点: 有序列插入排序方法和折半插入排序方法的原理与过程。 学习难点: 用算法语句描述排序方法。 学习目标: 1. 理解有序列插入排序方法和折半插入排序,并会设计算法 2.通过实例,发展用有序列插入排序方法和折半插入排序解决问题的能力。 学习过程: 为了便于查询,常常需要根据要求将被查寻的对象按照一定的顺序排列,通常称为排序。 例如:新来的同学小黄身高175cm,在班上是中等身高,因为做操的需要,体育老师要将他插到队中,你认为老师应该怎样做?象这样在已经按一定顺序排好的系列(有序列)中插入一个数据,我们就叫它有序列插入排序。 有序列直接插入排序法 有序列直接插入排序:用有序列直接插入排序算法完成无序列排序问题,其基本思想非常简单,即反复使用有序列直接插入排序算法,使有序列的长度不断增加,一直到完成整个无序列的有序排列为止. 一般地,对于一个有序列:a1≤a2≤a3≤…≤an,欲将新数据A插入到有序列中,形成新的有序列,其做法是:将数据A与原有序列中的数据从右到左依次进行比较,直到发现某一数据ai,使得ai≤A,把A插入到ai的右边;如果数据A小于原有序列中的所有数据,则将A插入到原序列的最左边.上面的排序算法通常称为有序列直接插入排序的算法. 我们在一个已经排好顺序的一系列数中插入一个数据,成为一个新的系列,且仍按原来的规则排序。 例如:要将8插入到{1,3,5,7,9,11,13}中,我们怎样考虑? 首先确定8在原系列中的位置,使8小于或等于原系列中右边的数据,大于或等于左边的数据,将这个位置空出来,将数据8插进去 1 3 5 7 8 9 11 13 例题分析: 例1已知有一组系列{13,27,38,39,43,47,48,51,57,66,74},现要将数据52插入到数据中。 数据序列号 1 2 3 4 5 6 7 8 9 10 11 原序列 13 27 38 39 43 47 48 51 57 66 74 (1)请设计算法,确定52在新数据中的位置。 (2)在确定52的序列号后,请将52插入系列中 (3)请用流程图描述这个插入过程的算法 问题思考:对于一组无序的数据列{49,38,65,97,76,13,27,49}如何完 成排序工作呢? 折半插入排序 如果R[1..i-1] 是一个按关键字有序的有序序列,则可以利用折半查找实现“在R[1..i-1]中查找R[i]的插入位置”,如此实现的插入排序为折半插入排序。 折半插入排序性能分析 1)折半插入排序所需附加存储空间和直接插入排序相同,从时间上来看,折半插入排序减少了关键字的比较次数,但是移动次数不变。 2)折半插入排序的时间复杂度为o(n2)。 3)折半插入排序是一个稳定的排序方法。 例2 中国乒乓球女队原有11名队员,她们的身高由小到大分别为158,159,160,162, 163,165,166,170, 171,172,175(单位:cm).现为备战某项比赛,加入一名优秀队员,这名队员身高167 cm.请设计用折半插入排序法找出该队员在序列中的位置,并用自然语言描述算法。 解析:由题目可获取以下主要信息: ①11名队员的身高; ②加入一名身高167 cm的队员; ③用折半插入排序法找出新加入队员在序列中的位置. 解答本题可先确定数据个数11.找到“中间位置”的数据a6=165,与167进行比较,然后把剩下数据“中间位置”的数据依次与167比较,直到得到167的位置。 变式练习 将52插入有序列{13,27,38,39,43,47,48,51,57,66,74,82}中,构成一个新的有序列。 [解] 首先选择有序列中具有中间位置序号的数据47,将52与47进行比较,显然5247,故52不能插入到47的左边的任何位置。所以,应该排在47的右边,再将余下数据的中间位置的数据57与52比较,显然5257,因此应插到57的左边,又5152,则52插入到51的右边,57的左边,即可得到52的位置。 小结和作业 本次课主要介绍了: (1)有关排序的基础知识 1.定义 2.稳定性和存储方式 3.排序算法的评价 (2)直接插入排序 1.基本思想 2.实例模拟 3.算法描述 4.算法的复杂度 (3)折半插入排序 1.基本思想 2.实例模拟 3.算法描述 4.算法的复杂度 课堂练习 1.将27插入到有序列{10,12,14,16,18,20,22,23,24,37,38,39,42,51,62}中,如果用折半插入排序可以进行几次比较就能完成,并设计算法。 2.将数据组 {49,38,65,97,76,13,27,49} 按照从小到大的顺序排列。 3.无序列{15,3,10,12,8

您可能关注的文档

文档评论(0)

dyx0821 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档