排序算法比较.docxVIP

  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文档。上传文档
查看更多
排序算法比较 研究人员:高二(12)班 孙亦超、朱俊杰; 指导老师:徐 伟 研究内容:比较排序算法的空间、时间复杂度; 研究目的:有效提高程序运行的速度; 研究意义:通过深入探究,分析其空间和时间复杂度,从而有效提高程序设计 者的算法设计; 研究日期:2004 年 8 月-2005 年 5 月 预期成果:flash 演示课件、word 研究报告、书面报告; 排序 Sorting 排序问题的输入是一个线性表,该线性表的元素属于一个偏序集;要求对该线性表的 元素做某种重排,使得线性表中除表尾外的每个元素都小于等于(或大于等于)它的后继。 设R 为非空集合A 上的二元关系,如果R 满足自反性(对于每一个x∈A,(x,x)∈R ), 反对称性((x,y)∈R∧(y,x)∈R→x=y )和传递性((x,y)∈R∧(y,x)∈R→(x,z)∈R),则称R 为 A 上的偏序关系,记作≤。如果(x,y)∈R,则记作x≤y,读作“x 小于等于y”。存在偏序关系的集合A 称为偏序集。 注意,这里的≤不是指数的大小,而是指在偏序关系中的顺序性。x≤y 的含义是:按照这个序,x 排在y 前面。根据不同的偏序定义,≤有不同的解释。例如整除关系是偏序关系≤, 3≤6 的含义是 3 整除 6。大于或等于关系也是偏序关系,针对这个关系 5≤4 是指在大于或等于关系中 5 排在 4 的前面,也就是说 5 比 4 大。 在实际应用中,经常遇到的偏序关系是定义在一个记录类型的数据集合上的。在该记 录类型中有一个主键域key,key 域的类型是某一个偏序集,记录的其他域称为卫星数据。比较线性表中的两个元素Li 和Lj 的大小,实际上是比较Li.key 和 Lj.key 的大小(这种比较 当然也是偏序集中的比较)。举例而言,某公司的数据库里记 录了员工的数据,每一项纪 录包括姓名,编号,年龄,工资等几个域,如果以编号为key 域对员工记录排序,则是将员工记录按照编号排序;如果以工资为key 域对员工记录排序,则是将员工记录按照工资高低排序;如果以姓名为key 域对员工记录排序,则是以员工姓名的汉语拼音按照字典顺序排序。 关于偏序集的具体概念和应用,请参见离散数学的相关资料。 如果一个排序算法利用输入的线性表在原地重排其中元素,而没有额外的内存开销, 这种排序算法叫做原地置换排序算法(in place sort);如果排序后并不改变表中相同的元素原来的相对位置,那么这种排序算法叫做稳定排序算法(stable sort)。 排序问题一般分为内排序( internal sorting )和外排序( external sorting )两类: 内排序:待排序的表中记录个数较少,整个排序过程中所有的记录都可以保留在内存中; 外排序:待排序的记录个数足够多,以至于他们必须存储在磁带、磁盘上组成外部文件,排序过程中需要多次访问外存。 排序问题的计算复杂性 对排序算法计算时间的分析可以遵循若干种不同的准则,通常以排序过程所需要的算 法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较 需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂 性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑用比较的次数 作为复杂性的度量。 为了对有n 个元素的线性表进行排序,至少必须扫描线性表一遍以获取这n 个元素的信息,因此排序问题的计算复杂性下界为Ω(n)。 如果我们对输入的数据不做任何要求,我们所能获得的唯一信息就是各个元素的具体 的值,我们仅能通过比较来确定输入序列a1,a2,..,an的元素间次序。即给定两个元素 ai 和aj,通过测试aiaj ,ai≤aj ,ai=aj ,ai≥aj ,aiaj 中的哪一个成立来确定ai 和aj 间的相对次序。这样的排序算法称为比较排序算法。下面我们讨论一下比较排序算法在最坏情况下至少需要多少次比较,即比较排序算法的最坏情况复杂性下界。 我们假设每次比较只测试ai≤aj ,如果 ai≤aj 成立则ai 排在 aj 前面,否则 ai 排在aj 后面。任何一个比较排序算法可以描述为一串比较序列: (ai,aj),(ak,al),..,(am,an),... 表示我们首先比较(ai,aj),然后比较(ak,al),...,比较(am,an),...,直到我们获取了足够 的信息可以确定所有元素的顺序。显而易见,如果我们对所有的元素两两进行一次比较的话 (总共比较了C 2 次 ,就一定可以确定所有元素的顺序。但是,如果我们运气足够好的话, )n ) 我们可能不必对所有元素两两进行一次比较。比如说对于有三个

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档