- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
大学计算机基础——基于计算思维(Windows10+Office2016)第10章算法思维与运用10.3.3直接插入排序10.3排序算法
1.问题分析直接插入排序班级花名册已按学号排好了,但突然转来了其他几位学生(已有学号,入学后就不会变)。军训已有某些人按高低顺序排好了队,后来又来了一些人。怎样将这几位同学也按学号排到花名册中呢?这些人怎样插入到队列中而不影响队伍的高低顺序呢?例如例如
1.问题分析直接插入排序对于临时产生的无序数据要实现实时排序采用直接插入排序
1.问题分析直接插入排序直接插入排序能实现实时排序,是因为除了无序队列外,还需要专门的区域存储有序队列。
1.问题分析直接插入排序然后每次从无序队列中取出一个元素,先在有序队列中找到相应的插入位置,再插入到有序队列中完成1趟插入,取出一个元素在有序队列中找到相应的插入位置插入
1.问题分析直接插入排序如此反复,直到无序队列中的元素都取完。取出一个元素在有序队列中找到相应的插入位置插入
2.算法实现直接插入排序(1)设计main子图粗框图。在main子图中若要调用其他子程序时,因子程序还没有创建,所以可只画出空的调用框,然后给每个调用框添加注释,注明该子程序名字和功能,这样先有个总体思路和设计,等其他子程序完成后就可回头补充完善main子图。
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能①输入待排数据的个数n。①
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能②调用一个输入子程序input,随机产生n个无序数据存放到数组a中。②
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能③调用一个输出子程序output,显示输出无序数组a中的所有元素。③
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能④取出a中的第1元素放到有序数组order[1]中,生成一个有序数组order。④
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能⑤调用直接插入排序子程序insert进行排序。⑤
2.算法实现直接插入排序(1)设计main子图粗框图。main子图要完成的功能⑥调用输出子程序output,显示输出有序数组order中所有元素。⑥
2.算法实现直接插入排序(2)设计输入和输出子程序(input、output)。2个子程序与冒泡排序中的相同,请自行完成。
2.算法实现直接插入排序(3)设计直接插入排序子程序insert粗框图。insert子程序要实现的就是从无序队列的第2个元素开始取,在有序数组order中找其插入位置,然后插入,直到无序队列尾部。
2.算法实现直接插入排序(3)设计直接插入排序子程序insert粗框图。根据功能分析,可在insert子程序中设计一个循环结构,循环体内调用一子程序location找a[i]在order中的插入位置,再调用子程序into将a[i]插入到order中相应位置。设循环变量为i,从2变化到n
2.算法实现直接插入排序(4)设计找插入位置子程序location。location要实现的功能是找a[i]在order中的插入位置,所以其“输入”参数有a、i、order,其中i表示取无序数组的第几个(i)元素,应增加一个“输出”参数wz来保存找到的插入位置并返回。
2.算法实现直接插入排序(4)设计找插入位置子程序location。找插入位置的方法是:将a[i]和order的第1个元素开始比较,如果a[i]大,则再和order中的下一个元素比较。直到比较到a[i]小了,则order元素所在位置就是插入位置,不用再比较了。若比较到oder的最后一个元素(下标i-1),a[i]都大,则插入位置就是i。
2.算法实现直接插入排序(4)设计找插入位置子程序location。所以设计一个循环结构(设循环变量为wz),从order的第1个元素(wz=1)开始,循环结束条件有2个:一个是a[i]order[wz],一个是到最后1个元素后(wzi-1),这两个条件用or运算符连接。从order的第1个元素开始循环结束的2个条件
2.算法实现直接插入排序(4)设计找插入位置子程序location。注意应把wzi-1放在or的左边,因为or的运算顺序是“从左到右”,而且左边表达式若为“真”,则就不会再判断右边的表达式,所以应先判断是否到了order的尾部,到了,则不再判断a[i]o
文档评论(0)