数据结构课件(10-12章).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文档。上传文档
查看更多
数据结构课件(10-12章)

第10章 内部结构 10.1 概述 假设Ki =Kj(1≤i ≤ n,1 ≤j ≤n,i≠j),且在排 序前的序列中Ri 领先于Rj(即ij).若在排序后的序列中Ri 仍领先于Rj ,则称所用的排序方法是稳定的;反之,若可 能使排序后的序列中Rj 领先于Ri,则称所用的排序方法是 不稳定的。 如果按排序过程中依据的不同原则对内部排序 方法进行分类,则大致可分为插入排序,交换排序, 选择排序,归并排序和计数排序; 如果按排序过程中所需的工作量来区分,则可分为3类: (1)简单的排序方法,其时间复杂度为O(n2); (2)先进的排序方法,其时间复杂度为O (nlogn); (3)基数排序,其时间复杂度为O(d·n)。 10.2 插入排序 10.2.1 直接插入排序 10.2.2 其他插入排序 void BInsertSort(SqList L){ for(i=2;i=L.length;++i){ L.r[0] = L.r[i]; low = 1;high = i-1; while(low=high){ m=(low+high)/2; if(LT(L.r[0].key,L.r[m].key)) high=m-1; else low=m+1; } for(j=i-1;j=high+1;--j) L.r[j+1]=L.r[j]; L.r[high+1]=L.r[0]; } } 是在折半插入排序的基础上再改进之,其目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。 3. 表插入排序 #define SIZE 100 typedef struct{ RcdType rc; int next; }SLNode; typedef struct{ SLNode r[SIZE]; int length; }SLinkListType; 图10.2 2-路插入排序示例 图10.3 表插入排序示例 图10.3 表插入排序示例 10.2.3 希尔排序 希尔排序又称“缩小增量排序”,它也是 一种属插入排序类的方法,但在时间效率上 较前述几种排序方法有较大的改进。 10.3 快速排序 起泡排序 图10.7 快速排序示例 图10.7 快速排序示例 10.4 选择排序 选择排序的基本思想是:每一趟在n-i+1(i=1,2,···,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。其中最简单且为读者最熟悉的是简单选择排序。 10.4.1 简单选择排序 10.4.1 简单选择排序 10.4.2 树形选择排序 树形选择排序,又称锦标赛排序,是一种按照锦标赛的思想进行选择排序的方法。 10.4.3 堆排序 堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间 图10.11 10.5 归并排序 归并排序:是一类不同的排序方法。“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。 10.6 基数排序 基数排序:是一种借助多关键字排序的思想对单逻 辑关键字进行排序的方法。 10.7 各种内部排序方法的比较讨论 ⑴ 从平均时间性能而言,快速排序最佳,其所需时间最省,但快速排序在最 坏情况下的时间性能不如堆排序和归并排序。 ⑵ 上表中的“简单排序”包括除希尔排序之外的所有插入排序,起泡排序和简 单选择排序,其中以直接插入排序为最简单,当序列中的记录“基本有序”或n值 较小时,它是最佳的排序方法,因此常将它和其他的排序方法,诸如快速排序、 归并排序等结合在一起用。 ⑶ 基数排序的时间复杂度也可写成O(d·n)。因此,它最适用于n值很大而 关键字较小的序列。若关键字也很大,而序列中大多数记录的“最高位关键字”均 不同,则亦可先按“最高位关键字” 不同将序列分成若干“小”的子序列,而后进行 直接插入排序。 ⑷ 从方法的稳定性来比较,基数排序是稳定的内排方法,所有时间复杂度为O (n2)的简单排序法也是稳定的,然而,快速排序、堆排序和希尔排序等时间性 能较好的排序方法都是不稳定的。 第11章 外部排序 11.2 外部排序方法 外部排序基本上由两个相对独立的阶段组成。 首先,按可用内存大小,将外存上含n个记录的文件 分成若干长度为L的子文件或段(segment),依次读入 内存并利用有效的内部排序方法对它们进行排序,并将排 序后得到的有序子

文档评论(0)

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

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

1亿VIP精品文档

相关文档