排序综合-课程设计报告.docVIP

  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文档。上传文档
查看更多
排序综合-课程设计报告

课 程 设 计 课程设计名称: 排序综合 专 业 班 级 : 0000000000000 学 生 姓 名 : 0000000000000 学 号 : 00000000000000 指 导 教 师 : 00000000000000 课程设计时间: 2010.6.21-2010.6.25 计算机科学与技术 专业课程设计任务书 学生姓名 专业班级 学号 题 目 排序综合 课题性质 A.工程设计 课题来源 D.自拟课题 指导教师 同组姓名 无 主要内容 综合应用所学知识,设计完成一个排序综合系统。本系统拟实现以下功能: 直接插入排序 希尔排序 快速排序 堆排序 结果保存 计算排序时间 系统要求采用VC6.0工具进行开发实现。 任务要求 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用c语言设计一个排序综合系统。 完成课程设计报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。 参考文献 [1] 数据结构. 严蔚敏,吴伟民 编著. 清华大学出版社. 2007年03月 [2] 数据结构、算法与应用:C++语言描术. (美)萨尼(Sahni,S.) 著,汪诗林 等译. 机械工业出版社.2005年03月…….,Kn},排序开始变认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列, 让K3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列. 1.2、希尔排序 思路:先取一个正整数d1(d1n),把全部记录分成d1个组,所有距离为d1的倍数的记录看成是一组,然后在各组内进行插入排序;然后取d2(d2d1),重复上述分组和排序操作,直到取di=1(=1),即所有记录成为一个组为此.一般选d1约为n/2,d2为d1/2,…….,di=1 1.3、快速排序:(递归和非递归) 思路:以第一个关键字K1为控制字,将[K1、K2、….Kn]分成两个子区,使左区的有关键字小于等于K1,右区所有关键字大于等于K1,最后控制居两个子区中间的适当位置。在子区内数据尚处于无序状态。 将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它的左子区和右子区,控制字区中。 重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的处理,直到栈空 分区处理函数hoare 思路:首先用两个指针i、j分别指向首、尾两个关键字,i=1,j=8。如对(46、56、14、43、95、10、19、72)。第一个关键字46作为控制字,该关键字所属的记录另存储在一个x变量中。从文件右端元素r[j].key开始与控制字x.key相比较,当r[j].key大于等于x.key时,r[j]不移动,修改指针j,j--,直到r[j].keyx.key,把记录r[j]移动到文件左边i所指向的位置;然后在文件左边修改i指针,i++,让r[i].key与x.key相比较,当r[i].key小于等于x.key时,r[i]不移动,修改指针i,i--,直到r[i].keyx.key, 把记录r[i]移动到文件右边j所指向的位置;然后在文件右边修改j指针j--。重复上面的步骤. 1.4、堆排序 思路:把n个记录存于向量r之中,把它看成完全二叉树,此时关键字序列不一定满足堆的关系。堆排序大体分为两步处理: 初建堆,从堆的定义出发,当i=1、2、。。。。、[2/n]时应满足ki=k2i和ki=k2i+1.所以先取i=[n/2](它一定是第n个结点的双亲编号),将以i结点为根的子树调整为堆,然后令i=i-1,将以不结点为根的子树调整为堆。此时可能会反复调整某些结点,直到i=1为止,堆初步建成。 堆排序,首先输出堆顶元素(一般是最小值),让堆中最后一个元素上移到原堆顶位置,然后恢复堆。因为经过第一步输出堆顶元素的操作后,往往破坏了堆关系,所以要恢复堆;重复执行输出堆顶元素、堆尾元素上移和恢复堆的步骤。 2、 概要设计 2.1、头文件 #includestdio.h #includestdlib.h #includecstdlib #includetime.h 2.2 、ADT struct element { int key; }list[20

文档评论(0)

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

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

1亿VIP精品文档

相关文档