(9)--lecture9数据结构数据结构.ppt

  1. 1、本文档共107页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

*三、排序方法的稳定性能1.稳定的排序方法指的是,对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。2.当对多关键字的记录序列进行LSD方法排序时,必须采用稳定的排序方法。排序之前:{·····Ri(K)·····Rj(K)·····}排序之后:{·····Ri(K)Rj(K)··········}*例如:排序前(56,34,47,23,66,18,82,47)若排序后得到结果(18,23,34,47,47,56,66,82)则称该排序方法是稳定的;若排序后得到结果(18,23,34,47,47,56,66,82)则称该排序方法是不稳定的。*3.对于不稳定的排序方法,只要能举出一个实例说明即可。4.快速排序、堆排序和希尔排序是不稳定的排序方法。例如:对{4,3,4,2}进行快速排序,得到{2,3,4,4}*四、关于“排序方法的时间复杂度的下限”本章讨论的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法。可以证明,这类排序法可能达到的最快的时间复杂度为O(nlogn)。(基数排序不是基于“比较关键字”的排序方法,所以它不受这个限制)*本章学习要点*1.了解排序的定义和各种排序方法的特点。熟悉各种方法的排序过程及其依据的原则。基于“关键字间的比较”进行排序的方法可以按排序过程所依据的不同原则分为插入排序、交换排序、选择排序、归并排序和计数排序等五类。*2.掌握各种排序方法的时间复杂度的分析方法。能从“关键字间的比较次数”分析排序算法的平均情况和最坏情况的时间性能。按平均时间复杂度划分,内部排序可分为三类:O(n2)的简单排序方法,O(nlogn)的高效排序方法和O(dn)的基数排序方法。*3.理解排序方法“稳定”或“不稳定”的含义,弄清楚在什么情况下要求应用的排序方法必须是稳定的。*习题解答实例*算法设计题3-12修改3.2的选择排序算法,使其具有稳定性。选择排序的数据实例108532125128243652810单元作哨兵已排好序的部分待排序的部分关键字相同的不同记录*选择排序不稳定性的出现10853212512824365281108532125128243652811221某一趟的原始数据该趟的排序过程*消除不稳定性的方法之一108532125128243652811085321251282436528112*消除不稳定性的方法之二3212512824365281108532125128243652811085选择排序的原始数据选择排序的辅助空间00选择排序的过程00000000*所谓“筛选”指的是,对一棵左/右子树均为堆的完全二叉树,“调整”根结点使整个二叉树也成为一个堆。筛选堆堆*98814973556412362740例如:是大顶堆12但在98和12进行互换之后,它就不是堆了因此,需要对它进行“筛选”98128173641298比较比较*voidHeapAdjust(RcdTypeR[],ints,intm){//已知R[s..m]中记录的关键字除R[s]之外均//满足堆的特征,本函数自上而下调整R[s]的//关键字,使R[s..m]也成为一个大顶堆}//HeapAdjustrc=R[s];//暂存R[s]for(j=2*s;j=m;j*=2){//j初值指向左孩子自上而下的筛选过程;}R[s]=rc;//将调整前的堆顶记录插入到s位置*if(rc.key=R[j].key)break;//再作“根”和“子树根”之间的比较,//若“=”成立,则说明已找到rc的插//入位置s,不需要继续往下调整

文档评论(0)

177****2883 + 关注
实名认证
内容提供者

热爱教育,专注于教育领域创作与分享,让我们共同进步。

1亿VIP精品文档

相关文档