《数据结构A》第10章(陈春玲)《数据结构A》第10章(陈春玲).pptVIP

《数据结构A》第10章(陈春玲)《数据结构A》第10章(陈春玲).ppt

  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文档。上传文档
查看更多
《数据结构A》第10章(陈春玲)《数据结构A》第10章(陈春玲)

数据结构 第10章 内排序 10.1 基本概念 设有n个数据元素的序列(R0,R1,…,Rn-1),Ki是Ri的关键字。所谓排序,就是找(0,1, …,n-1)的一种排列p(0),p(1), …,p(n-1),使得序列按 K p(0)?Kp(1)?…?Kp(n-1) (非递减) 或 K p(0)?Kp(1)?…?Kp(n-1) (非递增) 次序排列为: ( Rp(0),Rp(1),…,Rp(n-1)) 10.2 简单排序算法 10.3 快速排序 为避免发生最坏情况,选择分割元素时可作三种处理: (1)将A[(left+right)/2]作为分割元素,与A[left]交换; (2)选left到right间的随机整数k,将A[k]与A[left]交换; (3)取A[left]、A[(left+right)/2]和A[right]之中间值与A[left]交换。 对于快速排序: (1)为提高快速排序的效率,将递归程序改为非递归的; (2)为减小栈空间,先对较小的子序列排序,将较大的子序列进栈; 10.4 两路合并排序 基本思想:将有n个元素的序列看成是n个长度为1的有序子序列,然后两两合并子序列,得到?n/2?个长度为2或1的有序子序列;再两两合并,…,直到得到一个长度 为n的有序序列时结束。 初始序列: 48 36 68 72 12 48 02 第1趟:(12 36 02 48) 48 (72 68) 第2趟:(02) 12 (36 48) 48 (72 68) 第3趟: 02 12 36 (48) 48 (72 68) 第4趟: 02 12 36 48 48 68 72 快速排序算法各趟结果 算法要求A[n]=+∞,防止i超界! 为什么要求A[n]=+∞? 88 68 72 36 48 12 02 ∞ 0 1 2 3 4 5 6 7 left right i i向右扫描,寻找 A[i]=A[left]的元素 无限循环 如果每一次分划操作后,左、右两个子序列的长度基本相等,则快速排序的效率最高,其最好情况时间复杂度为O(nlog2n);反之,如果每次分划操作所产生的两个子序列,其中之一为空序列,此时,快速排序效率最低,其最坏情况时间复杂度为O(n2)。如果选择左边第一个元素为分割元素,则快速排序的最坏情况发生在原始序列正向有序或反向有序时。快速排序的平均情况时间复杂度为O(nlog2n)。 系统需要有一个堆栈来实现快速排序递归算法。在最坏情况下,程序12-6所需的系统栈的最大深度为O(n)。为了减少栈空间大小,可在每次分划后,将较大子序列的上、下界进栈,而对较小的子序列先进行排序。这样可使所需的栈空间大小降为O(log2n)。 快速排序是不稳定的排序方法。 初始序列:(48)(36)(68)(72)(12)(48)(02) 第1趟结果: 第2趟结果: 第3趟结果: (68 72) (36 48) (02) (12 48) (02 12 48) (36 48 68 72) (02 12 36 48 48 68 72) Data Structures in C++ 10.1 基本概念 10.2 简单排序算法 10.3 快速排序 10.4 两路合并排序 序列中两个元素Ri和Rj (ij),且Ki=Kj,若排序后仍保持p(i)p(j),即Ri 仍然排在Rj之前,则称所用的排序算法是稳定的。反之,称该排序算法是不稳定的。 3,1,3=1,3,3 3,1,3=1,3,3 如果待排序元素总数相对于内存而言较小,整个排序过程可以在内存中进行,则称之为内部排序;反之,如果待排序元素总数较多,不能全部放入内存,排序过程中需访问外存,则称之为外部排序。本章讨论内部排序。 本章讨论内部排序。 本章采用顺序存储方式,即用一个一维数组A[n+1](n为序列中元素个数)存储序列中各元素的关键字,忽略元素的其它部分,把精力集中在排序算法上。 简单选择排序 冒泡排序 直接插入排序 10.2.1 简单选择排序 基本思想:第1趟在初始序列(A[0]? A[n-1])中找一个最小值,与序列中第一个元素A[0]交换,这样子序列(A[0])有序。 下一趟排序在子序列(A[1]?A[n-1])中进行。 0 1 2 3 4 5

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档