高中数学2-3排序问题北师大版必修.ppt_第1页
高中数学2-3排序问题北师大版必修.ppt_第2页
高中数学2-3排序问题北师大版必修.ppt_第3页
高中数学2-3排序问题北师大版必修.ppt_第4页
高中数学2-3排序问题北师大版必修.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.3排序问题,北师大版高中数学必修3第二章算法初步,排序问题和插入排序,排序的定义,折半插入排序,你会从这些书籍中查阅你想要的东西吗?,为了便于查询,常常需要根据要求将被查寻的对象按照一定的顺序排列,通常称为排序。,新来的同学小黄身高175cm,在班上是中等身高,因为做操的需要,体育老师要将他插到队中,你认为老师应该怎样做?,teacher,小黄,象这样在已经按一定顺序排好的系列(有序列)中插入一个数据,我们就叫它有序列插入排序。,有序列直接插入排序法 有序列直接插入排序:用有序列直接插入排序算法完成无序列排序问题,其基本思想非常简单,即反复使用有序列直接插入排序算法,使有序列的长度不断增加

2、,一直到完成整个无序列的有序排列为止,一般地,对于一个有序列:a1a2a3an,欲将新数据A插入到有序列中,形成新的有序列,其做法是:将数据A与原有序列中的数据从右到左依次进行比较,直到发现某一数据ai,使得aiA,把A插入到ai的右边;如果数据A小于原有序列中的所有数据,则将A插入到原序列的最左边上面的排序算法通常称为有序列直接插入排序的算法,有序列插入排序,我们在一个已经排好顺序的一系列数中插入一个数据,成为一个新的系列,且仍按原来的规则排序。,要将8插入到1,3,5,7,9,11,13中,我们怎样考虑?,确定8在原系列中的位置,使8小于或等于原系列中右边的数据,大于或等于左边的数据,将这

3、个位置空出来,将数据8插进去,8,例题分析,例1已知有一组系列13,27,38,39,43,47,48,51,57,66,74,现要将数据52插入到数据中。,(1)请设计算法,确定52在新数据中的位置。,(2)在确定52的序列号后,请将52插入系列中,(3)请用流程图描述这个插入过程的算法,方法1.手工插入:,确定52的序号:9;,把原序列中911号的数据依次向右挪一位,空出9号位置来,并插入52,得到一个新序列。,方法2. 即从右边最后一位开始,与52比较,若比52大就右挪,否则插入52.,有序列插入排序算法的另一种方法,折半插入排序法 请同学们参看P84.下段,问题思考:对于一组无序的数据

4、列49,38,65,97,76,13,27,49如何完 成排序工作呢?,请同学们参看P85,折半插入排序,如果R1.i-1 是一个按关键字有序的有序序列,则可以利用折半查找实现“在R1.i-1中查找Ri的插入位置”,如此实现的插入排序为折半插入排序。,折半插入排序性能分析,1)折半插入排序所需附加存储空间和直接插入排序相同,从时间上来看,折半插入排序减少了关键字的比较次数,但是移动次数不变。 2)折半插入排序的时间复杂度为o(n2)。 3)折半插入排序是一个稳定的排序方法。,折半插入排序,待排序元素的插入位置,0 1 2 3 4 5 6 7 8 9 10,58,14,36,49,52,80,5

5、8,61,23,97,75,L.r,例2中国乒乓球女队原有11名队员,她们的身高由小到大分别为158,159,160,162, 163,165,166,170, 171,172,175(单位:cm)现为备战某项比赛,加入一名优秀队员,这名队员身高167 cm.请设计用折半插入排序法找出该队员在序列中的位置,并用自然语言描述算法,解析:由题目可获取以下主要信息: 11名队员的身高; 加入一名身高167 cm的队员; 用折半插入排序法找出新加入队员在序列中的位置 解答本题可先确定数据个数11.找到“中间位置”的数据a6165,与167进行比较,然后把剩下数据“中间位置”的数据依次与167比较,直到

6、得到167的位置,解:要将167插入有序列:158,159,160,162,163,165,166,170,171,172,175,共有11个数据列表为: 首先选择有序列的“中间位置”的数据a6165,将167与a6比较,显然167165,所以167应排在a6的右边,再取余下数据列a7,a8,a9,a10,a11的“中间位置”的数据a9171,显然167166,所以167应在a7、的右边又167a8,所以167应插在a7与a8之间,评析:用折半插入排序法向有序列中插入新数据时,首先确定原有序列中数据的个数是偶数2n还是奇数2n1.若为偶数,则“中间位置”的数据是第n个数据;若为奇数,则“中间位

7、置”的数据为第n1个数据,然后将新数据与“中间位置”的数据比较,若新数据大于“中间位置”的数据,则在右半边进行下一步骤;若新数据小于“中间位置”的数据,则在左半边进行下一步骤;依次类推,就可以确定新数据在序列中的位置,变式练习 将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的右边,5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论