交换法排序具体实现及性能分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.1 排序的基本概念 8.1.2 排序算法的效率分析 8.2 插入排序 8.2.1 直接插入排序 8.2.2 折半插入排序 8.2.3 希尔排序 8.3交换排序 8.3.3 快速排序 8.4选择排序 8.4.2 堆排序 8.5归并排序 8.6基数排序 8.7外部排序 8.7.1外部排序过程 8.7.2多路平衡归并 8.7.3置换一选择排序 8.8各种排序方法的比较 本章小结 本文观看结束!!! 【例8-11】设文件中共有18个记录,记录的关键字分别为{15,4,97,64,17,32,108,44,76,9,39,82,56,3l,80,73,255,68},内存工作区可容纳5个记录。 【解】初始归并段的生成过程如表8-1所示。 共产生两个初始归并段,即归并段1:{4,15,17,32,44,64,76,83,97,108},归并段2:{9,31,39,56,68,73,80,225}。从中可见,初始归并段的个数较少,由此可以减小归并的趟数。 由置换-选择排序所得到的初始归并段的长度不同,当输入文件中记录的关键字为随机数时,所得到的初始归并段的平均长度为内存工作区大小的两倍。 在前面几节中讨论了内部排序和外部排序的方法。对于内部排序主要介绍了五大类排序方法:插入排序(直接插入排序、折半插入排序和希尔排序)、交换排序(冒泡排序和快速排序)、选择排序(简单选择排序和堆排序)、归并排序和基数排序。详细讨论了各种排序方法的基本原理,并从时间复杂性、空间复杂性以及排序的稳定性三方面讨论了各种排序方法的时效性,介绍了各排序方法的实现算法及其存在的优缺点。如果待排序的数据量很小,最好选择编程简单的排序算法,因为在这种情况下采用编程复杂、效率较高的排序方法所能节约的计算机时间是很有限的。反之,如果待处理的数据量很大,特别是当排序过程作为应用程序的一部分需要经常执行时,就应该认真分析和比较各种排序方法,从中选出运行效率最高的方法。 下面具体比较一下各种排序方法,以便实现不同的排序处理。 (1) 插入排序的原理:向有序序列中依次插入无序序列中待排序的记录,直到无序序列为空,对应的有序序列即为排序的结果,其主旨是“插入”。 (2) 交换排序的原理:先比较大小,如果逆序就进行交换,直到有序。其主旨是“若逆序就交换”。 (3) 选择排序的原理:先找关键字最小的记录,再放到已排好序的序列后面,依次选择,直到全部有序,其主旨是“选择”。 (4) 归并排序的原理:依次对两个有序子序列进行“合并”,直到合并为一个有序序列为止,其主旨是“合并”。 (5) 基数排序的原理:按待排序记录的关键字的组成成分进行排序的一种方法,即依次比较各个记录关键字相应“位”的值,进行排序,直到比较完所有的“位”,即得到一个有序的序列。 各种排序方法的工作原理不同,对应的性能也有很大的差别,下面通过一个表格可以看到各排序方法具体的时间性能、空间性能等方面的区别。 (e) 重建堆,筛选56下移两层 (f)交换24和48 (g) 重建堆,筛选48下移一层 (h)交换37和61 (i) 重建堆,筛选61下移一层 (j) 交换37和56 (k)重建堆,筛选56下移一层 (l) 交换48和61 (m) 重建堆,筛选61下移一层 (n) 交换56和61 图8-10 堆排序示例 对堆排序算法主要由建立初始堆和反复重建堆两部分构成,它们均通过调用Sift()实现。假设具有n个记录的初始序列对应的完全二叉树的深度为h= ,则在建立初始堆时,对每一个非叶子结点都要从上到下做“筛选”,则建立初始堆的总比较次数C1为: ≤ 其时间复杂度为O(n)。n个结点完全二叉树的深度为 ,n-1次建新堆的总比较次数C2为: ≤ ≤ 堆排序所需的关键字比较的总次数是: + = O(nlog2n) 类似地,可求出堆排序所需的记录移动的总次数为:O(nlog2n),因此堆排序的最坏时间复杂度为O(nlog2n)。堆排序算法一般适合于待排序记录数比较多的情况。 堆排序需要一个辅助空间,所以空间复杂度为O(1)。 堆排序也是不稳定排序。 归并排序(Merge Sort)也是一种常用的排序方法,“归并”的含义是将两个或两个以上的有序表合并成一个新的有序表。如图8-11为两组有序表的归并,有序表{4,25,34,56,69,74}和{15,26,34,47,52},通过归并把它们合并成一个有序表{4,15,25,26,34,34, 47,52, 56,69,74}。 图8-11 两组有

文档评论(0)

ygxt89 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档