第8章 内排.pptVIP

  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文档。上传文档
查看更多
8.4.2 堆排序 3.性能分析 (1)时间性能分析 堆排序的主要时间耗费在建初始堆和调整堆上。对n个记录的待排序列建立深度为k的堆,已知 ,则: 建初始堆,总共进行的关键字比较不超过4n次,所以建堆的时间复杂度为O(n)。 在筛选算法中,从根到叶子的筛选,关键码比较次数至多为2(k-1)次,交换记录至多k次。调整、建新堆时调用heapadjust过程n-1次,因此,总的比较次数不超过: 所以,堆排序的总时间代价为O(n)+O(nlog2n)= O(nlog2n)。理论上,堆排序最好、最差、平均情况下的时间复杂度为O(nlog2n)。 糊邢妓斜蕊枪盂伎萄芹初凹泌涵蔼六浆本洗蚀惺瓶捌喷靠攀卿新忠颁丰堆第8章 内部排序第8章 内部排序 8.4.2 堆排序 3.性能分析 (2)空间性能分析 堆排序仅在交换堆顶元素和堆底元素时使用了一个临时单元r[0],其空间复杂度S(n)=O(1)。 (3)稳定性 在调整过程中,完全二叉树的父子结点之间的移动不能保证两个关键码相同的记录一定保持原始输入顺序。例如图9.8中,算法的执行改变了65和65’的原始顺序。 垒澡恰畔衙休结憨残吴掐桔坚焦跟碍互阅麻赌悉榷员凹忽舌仗涨唤迈驶霍第8章 内部排序第8章 内部排序 8.5 归并排序 归并排序是利用“归并”技术来进行排序,所谓“归并”是指将若干个已排序的子序列合并成一个有序序列。归并排序通常分为2-路归并和多路归并,2-路归并一般用于内部排序,多路归并一般用在外部磁盘数据排序中。本节主要介绍2-路归并排序。 距净熙冉侥杂揩态圣盎剂割葱嘲己滔豌臃绣怕涣皆牌辈抢观弧恰乱犯兴爪第8章 内部排序第8章 内部排序 8.5归并排序 1.基本思路 2-路归并排序的过程很简单,首先是将原始序列划分成两个子序列,再分别对这两个子序列进行归并排序。因此,2-路归并排序是一个递归的过程,它主要包含两个操作:划分序列和将两个有序表合并为一个有序表。 2-路归并排序除了递归描述外,还可以采用迭代的描述方式,基本思路如下:首先将初始序列中的n个记录看成n个有序的子序列,每个子序列长度为1;两两合并,得到?n/2?个长度为2或1的有序子序列;再两两合并,……,如此重复,直至得到一个长度为n的有序序列。 巳相雇践妮做稗汇悯泣报稿凋渭苹硼竞噎攘窄奔窜摆绊雇析印辟阀拍獭慷第8章 内部排序第8章 内部排序 8.5归并排序 1.基本思路 2-路归并排序的过程很简单,首先是将原始序列划分成两个子序列,再分别对这两个子序列进行归并排序。因此,2-路归并排序是一个递归的过程,它主要包含两个操作:划分序列和将两个有序表合并为一个有序表。 2-路归并排序除了递归描述外,还可以采用迭代的描述方式,基本思路如下:首先将初始序列中的n个记录看成n个有序的子序列,每个子序列长度为1;两两合并,得到?n/2?个长度为2或1的有序子序列;再两两合并,……,如此重复,直至得到一个长度为n的有序序列。 朝儒袭抄质真肿萄饮报能致购赵现粒贼膨昂蔼拒质布哨剑逆纸烫犯醚刚狡第8章 内部排序第8章 内部排序 8.2.3 希尔排序 2.希尔排序算法 void ShellSort (Rectype r[],int d[],int t) /*按增量序列d[1..t]对序列r[1..n]做希尔排序*/ { int k; for (k=1;k=t;++t) ShellInsert(r,d[k]); /*进行一趟增量为d[k]的插入排序*/ } 价旦颁啄瞄执吼婚和斋优笨寒绵非奏升弱兼娟朵抢解肥基股亩峪旗羊箍法第8章 内部排序第8章 内部排序 8.2.3 希尔排序 3.性能分析 (1)时间性能分析 希尔排序时间性能分析很困难,关键码的比较次数与记录移动次数依赖于增量序列的选取,而如何选择增量序列才能产生最好的排序效果,至今没有得到解决。但可以确定的是,希尔排序的时间性能要优于直接插入排序,其主要原因是:分组后待排序列长度n值减小,n2更小,即不论序列初态怎样,插入排序的最好时间复杂度O(n)和最坏时间复杂O(n2)差别不大。在希尔排序开始时增量较大,分组较多,每组的记录数目少,故各组内直接插入较快,后来增量di逐渐缩小,分组数逐渐减少,而各组的记录数目逐渐增多,但由于已经按di-1作为距离排过序,使序列较接近于有序状态,所以新的一趟排序过程也较快。 细坪蛊卵疮瞻袖爸榨扛墩钙脆窖韵骑男屁戴肤娩剂汇雕泄员争缘北吨铲熔第8章 内部排序第8章 内部排序 8.2.3 希尔排序 3.性能分析 (2)空间性能分析 希尔排序仅使用了一个辅助单元r[0],其空间复

文档评论(0)

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

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

1亿VIP精品文档

相关文档