数据结构与算法C11汇.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文档。上传文档
查看更多
数据结构与算法C11汇

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????第 11 章 排序算法 ?????????????????????????????????????????????????????? 从操作角度看,排序是线性结构的一种操作,在当今的计算机系统中,花费在排序上的时间占系统CPU运行时间的比重很大。有资料表明,在一些商用计算机上,用在排序上的CPU时间达到20%至60%。为了提高排序效率,人们已对排序进行了许多研究,提出了许多方法/算法。从算法设计角度看。排序算法不仅对排序本身重要,而且展示了算法设计的某些重要原则和高超的技巧,所以也是重要的算法设计方法。因此,对于计算机专业人员来说,认真研究和掌握排序算法是十分重要的。 §11.1 概述 排序(Sorting)(也称整序)通常被理解为按规定的原则重新安排一组给定的对象的的排列次序。排序的主要目的是便于以后在已排序的集合中查找/检索某一成员。日常生活中,通过排序以便于检索的例子屡见不鲜。例如,电话号码簿、目录表、图书馆、词典、仓库以及一切需对所存贮的对象进行检索的地方都要先将对象加以排序。下面先介绍若干概念。 1.关键字:关键字形式上是记录中的某个字段(或某些字段的组合),在具体的操作中,用于代表其所在的记录。对排序操作,是以关键字字段的内容的大小进行排序的。记录中关键字字段的值称为键值。键值一般为数值或字符串。 2.排序:在数据结构中,排序被认为是定义在数据集合上的一种运算,其功能是将一组任意排列的数据元素(在排序中称为记录)重新排列成一个按键值有序的序列。具体地,排序定义如下定义: 设{R1,R2,…,Rn}为含n个记录的序列,其相应的键值序列为{k1,k2,…kn}。排序是将这些记录重新排列为{Ri1,Ri2,…,Rin},使得相应的键值满足条件ki1≤ki2≤…≤kin(升序),或满足ki1≥ki2≥…≥kin(降序)。这里的比较运算(≤或≥),或是数值比较,或是字符串比较。 3.排序的稳定性:假定在待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍然保持不变(即在原序列中ki=kj,i<j;而在排序后的序列中,Ri 仍在Rj之前),则称这种排序方法是稳定的,否则称为不稳定的。 4.内排序:由于记录的形式、数量和所存放的存储设备不同,排序所采用的方法也不同。按照排序过程涉及的存储设备的不同,排序分为内排序(internal sorting)和外排序(external sorting)两大类。内排序是指在排序的整个过程中,数据全部存放在计算机的内存中,排序所需所有操作只需在内存中进行,不需进行内外存交换。内排序适用于记录个数不太多的小文件,同时也是外排序的基础。 5.外排序:是指在排序过程中,待排序的数据较多,不能一次全部装入内存继续排序,需进行内外存交换(即读入部分数据,处理后写回外存,然后再读入其他部分)。外排序适用于记录个数很多,不能一次将其全部都放入内存的大文件。 本章先集中讨论内排序的各种典型方法和算法,最后再简单介绍一下外排序。 6.多键排序:按多个关键字排序。这主要针对关键字值有重复的情况。首先按第一关键字排序,对第一关键字相等的记录,按第二关键字排序,而第二关键字也相等的记录再按第三关键字排,余类推。 多键排序有两种方式(设第1到第n个关键字分别为k1, k2, …, kn): a) 依次对记录进行n次排序,第一次按kn排序,第二次按kn-1,…, 最后一次按k1排。这种方法要求各趟排序所用算法是稳定的。 b) 先将关键字k1, k2, …, kn分别视为字符串,将它们依次首尾连接在一起,形成一个字符串,然后,对记录集按新形成的字符串排序。 不论那种无法,多键排序都被转化为了单键排序,所以,我们只讨论单键排序的情况。 显然,方法b)的速度要快于a). ? 内排序的方法很多,如果按排序过程中依据的不同原则对内排序方法进行分类,则主要分为为:插入排序、交换排序、选择排序、归并排序等四类,另一类是分配排序。 为了比较各种排序算法的优劣,要分析算法的时间复杂性。为此,通常只考虑键值的比较次数和记录的移动次数,即以键值比较和记录移动为标准操作。当键值是字串的时候,比较要占用较多的时间,是影响时间复杂性的主要因素。而当记录很大时

文档评论(0)

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

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

1亿VIP精品文档

相关文档