- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
插入类排序
基本思想将待排序表看做是左、右两部分,其中左边为有序区,右边为无序区,整个排序过程就是将右边无序区中的记录依次按关键字大小逐个插入到左边有序区中,以构成新的有序区,直到全部记录都排好序。两种插入排序方法:直接插入排序折半插入排序
1.直接插入排序基本思想①将整个待排序的记录序列划分成有序区和无序区,初始时有序区为待排序记录序列中的第一个记录,无序区包括所有剩余其他记录;②将无序区的第一个记录插入到有序区的合适位置中,从而使无序区减少一个记录,有序区增加一个记录;③重复执行2),直到无序区中没有记录为止。以初始序列讲解:[12]150920063628
1.直接插入排序voidInsertSort(intr[],intn){ inti,j,temp; for(i=1;in;i++) { temp=r[i]; for(j=i-1;j=0tempr[j];j--) r[j+1]=r[j]; r[j+1]=temp; }}外层循环控制排序趟数,执行n-1趟查找待插入位置内层循环的执行次数取决于在第i个记录前有多少个记录的关键字值大于第i个记录的关键字值
1.直接插入排序最好情况下(正序):最坏情况下(逆序):时间复杂度为O(n2)。时间复杂度为O(n)。时间性能分析平均情况下(随机排列):时间复杂度为O(n2)。
1.直接插入排序空间性能分析空间性能:需要一个记录的辅助空间。直接插入排序算法是一种稳定的排序算法。稳定吗?直接插入排序算法简单、容易实现,适用于待排序记录基本有序或待排序记录较小时。当待排序的记录个数较多时,大量的比较和移动操作使直接插入排序算法的效率降低。适用环境?
2.折半插入排序如何改进?直接插入排序利用顺序查找方法确定记录的插入位置。对于有序表采用折半查找方法,其性能优于顺序查找,所以,在插入排序过程中可以利用折半查找方法来确定记录的插入位置,相应的插入排序方法称为折半插入排序。算法性能有变化吗?折半插入排序法虽然改善了算法中比较次数的数量级为O(nlog2n),但其并未改变移动元素的时间耗费,所以折半插入排序总的时间复杂度仍然是O(n2)。
练一练2012年考研真题11.对一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是()。A.排序的总趟数B.元素的移动次数C.使用辅助空间的数量D.元素之间的比较次数
3.希尔排序对直接插入排序进行改进改进的着眼点:(1)若待排序记录按关键码基本有序时,直接插入排序的效率可以大大提高;(2)由于直接插入排序算法简单,则在待排序记录数量n较小时效率也很高。
3.希尔排序基本思想:先将待排序列划分为若干小序列,在这些小序列中进行插入排序;然后逐步扩大小序列的长度,减少小序列的个数,这样使待排序列逐渐处于更有序的状态;最后对全体序列进行一次直接插入排序,从而完成排序。
3.希尔排序需解决的关键问题?(1)应如何分割待排序记录,才能保证整个序列逐步向基本有序发展?(2)子序列内如何进行直接插入排序?分割待排序记录的目的?1.减少待排序记录个数;2.使整个序列向基本有序发展。
基本有序:例如{1,2,8,4,5,6,7,3,9};
局部有序:例如{6,7,8,9,1,2,3,4,5}。
局部有序不能提高直接插入排序算法的时间性能。启示?子序列的构成不能是简单地“逐段分割”,而是将相距某个“增量”的记录组成一个子序列。
3.希尔排序0123456784021254925*16初始序列300813d=44021254925*16300813252125*300849131640d=21325210825*16304940252125*300813164049d=10825211325*16304049082513162125*403049希尔插入排序过程示例
3.希尔排序解决方法:将相隔某个“增量”的记录组成一个子序列。增量应如何取?希尔最早提出的方法是d1=n/2,di+1=di/2。问题1:应如何分割待排序记录?算法描述:for(d=n/2;d=1;d=d/2){以d为增量,进行组内直接插入排序;}
3.希尔排序解决方法:在插入记录r[i]时,自r[i-d]起往前跳跃式(跳跃幅度为d)搜索待插入位置
您可能关注的文档
- 数据结构案例教程课件:查找.pptx
- 数据结构案例教程课件:排序.pptx
- 数据结构案例教程课件:图.pptx
- 数据结构案例教程课件:线性表.pptx
- 数据结构案例教程绪论.pptx
- 数据结构课件:AOE网与关键路径.pptx
- 数据结构课件:AOV网与拓扑排序.pptx
- 数据结构课件:Huffman树与Huffman编码.pptx
- 数据结构课件:二叉树的存储与基本操作.pptx
- 数据结构课件:二叉树的基本性质.pptx
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
文档评论(0)