数据结构第八章-排序.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 排 序 学习目的要求: 简单插入排序 基数排序 算法的实现: 为每个“盒”设置一个链接队列,并将各队列的队首和队尾指针分别存于两个一维数组中。 开始时,将原始数据构成一个链接队列,设各“盒”的队列均为空队列。然后将原始数据队列中各结点,按所考虑的关键字某位数的值插入到相应“盒”的队列中去。 当一趟结束时,再把各“盒”的队列依次首尾相连,链接成一个链接队列,以此作为下一趟的输入。 如此反复进行,直至做完d趟,即排序结束。 考试题型: 一、选择题(20分) 二、填空题(10分) 三、问答题(50分) 四、算法设计题(20分) 快速排序过程示意图: 有序序列 6 18 23 52 67 key 初始序列 23 52 6 67 18 low high 一次交换 18 52 6 67 23 low high 二次交换 18 23 6 67 52 high 三次交换 [18 6] 23 [67 52] // 完成一趟排序后分别进行快速排序 low high 8.4 交换排序 快速排序的时间复杂度平均为 O(nlog2n),当n较大时, 这种算法是平均速度最快的排序算法,因此称为快速排序。快速排序是一种不稳定的排序方法。 8.5 归并排序 归并排序(Merging Sort)是又一类不同的排序方法。“归并”的含义是将两个或两个以上的有序序列合成一个新的有序序列。 假设初始序列含有 n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到 n/2 个长度为2(最后一个序列长度可能小于2)的有序子序列;再两两归并,得到 n/2 /2 个长度为4(最后一个序列长度可能小于4)的有序序列;如此重复,直至得到一个长度为n的有序序列为止,每一次合并过程称为一趟归并排序,这种排序方法称为 2-路归并排序。 例如,设待排序的记录序列为: 42 36 56 78 67 11 27 36 2-路归并排序中的核心操作是将一维数组中前后相邻的两个有序序列归并为一个有序序列。 8.5 归并排序 2-路归并排序算法的时间复杂度为 O(nlog2n)。 2-路归并排序算法是稳定的。 8.5 归并排序 8.6 基数排序 基数排序(Radix Sorting)是和前面所述各类排序方法完全不同的一种排序方法。前面讨论的排序主要是通过关键字间的比较和移动记录这两种操作实现的,而基数排序没有进行这两种操作,它是借助多关键字排序的思想实现的,其基本操作是按关键字位进行“分散”和“收集”。 基数排序的基本思想: 设一组待排序数据的个数为n,每个数据的位数为d,每位数可能有rd种取值,则这种排序方法需进行d趟“分散”和“收集”,每趟检查n个数的某一位数,并按此位数值的不同,将其分别放到rd个卡片盒中(分散),然后按照rd个卡片盒的顺序进行收集. 每位数可能取值的数目rd称为基数(Radix),例如对于十进制数的每一位可能有0到9十种取值,故基数为10;而二进制的每一位数只能有0和1两种取值,则基数为2。 (a) 原始数据 原始数据中:n=9,d=3,rd=10 基数排序的时间复杂度为O(d(n+rd))。由于d、rd是常数,当n较大时,基数排序的时间复杂度近似为O(n)。但n较小,d较大时,采用基数排序并不合 适;只有当n较大、d较小时,基数排序才最为有效。 这种排序方法的缺点是占用的存储空间较多,每个待排序的记录都需要加上指针域。 基数排序是稳定的排序算法。 8.6 基数排序 数据结构 数据结构 第8章 排 序 掌握排序的概念和排序的种类。 熟练掌握五类基本排序:插入排序、交换排序、选择排序、归并排序和基数排序的算法思想、算法实现和性能分析。 8.1 排序的基本概念 8.2 插入排序 8.3 选择排序 8.4 交换排序 8.5 归并排序 8.6 基数排序 8.7 几种排序方法的比较 第8章 排 序 8.1 排序的基本概念 将一组杂乱无序的数据元素(记录)按一定的规律顺次排列起来叫做排序(sort)。 对一批记录的排序,应该指定是根据记录中哪个域的数据进行排列。这个作为排序依据的数据域我们称之为关键字(key)。 排序方法: 大多数的排序方法,数据是存储在内存中,

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档