快速排序课程设计报告——包含源代码.docVIP

快速排序课程设计报告——包含源代码.doc

  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文档。上传文档
查看更多
快速排序课程设计报告——包含源代码

2011/2012学年第2学期“算法分析与设计”上机报告 学院/系 信息工程学院计算机科学系 专业 计算机科学与技术 班级 项目名称 快速排序 组长 小组成员 目录 问题描述...........................................................................................................3 算法分析...........................................................................................................3 伪代码...............................................................................................................4 演示程序设计...................................................................................................4 演示界面...........................................................................................................5 算法实现...........................................................................................................7 总结.................................................................................................................. 15 参考文献.......................................................................................................... 16 问题描述: 快速排序(quicksort)是分治(divide and conquer)法的一个典型例子。分治法就是对于一个规模为n的问题,若该问题可以容易的解决(比如说规模n较小),则直接解决,否则将其分解为k个规模较小的子问题,这些字问题相互独立且与原问题形式相同,递归地解决这些子问题,然后将各个子问题的解合并,得到原问题的解的算法设计策略。归纳起来分治法在每一层递归上由三个步骤组成:(1)划分(divide);(2)解决(conquer);(3)合并(combine)。 快速排序算法在最坏情况下的的复杂度为Θ(n2)。由于快速排序具有良好的平均性能Θ(n lb n),且在Θ(n lb n)中隐藏的常数因子较小,因此它在实际中常常是首选的排序算法。这次的任务就是以快速排序算法实现对任意数字序列的排序,并能借助GUI实现动态的演示过程。所选编程语言为JAVA。 算法分析: 快速排序算法是基于分治法的算法设计范例,它由以下三步组成: (1)划分:将数组A[p..r]划分成两个子数组A[p..q-1]和A[q+1..r](其中之一可能为空),且数组A[p..q-1]中的每个元素值不超过数组A[q+1..r]中的每个元素值。计算下标q作为划分过程的一部分。 (2)解决:递归调用快速排序算法,对两个子数组A[p..q-1]和A[q+1..r]进行排序。 (3)合并:由于子数组中元素已被排序,无需合并操作,整个数组A[p..r]有序。 快速排序的QUICKSORT过程及PARTITION过程在伪代码中详细表述,这里直接使用。初始时,调用QUICKSORT(A, p, length[A])。算法的关键之处在于划分过程PARTITION,如果不计所用栈的空间,则快速排序所需空间为O(1)。 对快速排序算法进行时间代价分析: 最坏情况运行时间为Θ(n2),最好情况的运行时间为O(n lb n)。平均情况更类似于最好情况,关键在于要理解平衡划分是如何反映描述运行时间的递归方程的。假定划分算法总是产生9∶1的划分比例,这似乎是相当不平衡的划分。快速排序的递归方程为:T(n)≤2T(n/2)+Θ(n)。递归方程的递归树的每一层开销为cn,在深度lgn=Θ(lb n)达到边界条件开销至多为cn,递归在深度log10/9=Θ(lb n)时终止,快速排序的总开销为O(n lb n),与

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档