网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构作业报告.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构作业报告.doc

华南农业大学信息学院 设计性、综合性实验 起止日期:2002 -2003 学年第一学期 系别 01计算机 班级 01计算机(4)班 小 组 名 实 验 题 目 实现各种排序算法并分析与比较 √设计性 □综合性 分 工 情 况 学号 姓名 分工 得分 2001374424 吴晓辉 算法思想,程序设计,调试并通过程序,写报告 自 我 评 价 本程序完成实验要求的全部功能直接插入排序、SHELL排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序,程序代码符合书写规范,实验报告叙述清晰完整,有详尽的分析和总结。 在实验过程中,积极配合本团队分工合作的精神,努力学习,总算不负众望,将程序编好,在此,我更想感谢的是老师的教导,在她的帮助下,我才顺利完成了本次的任务。 教 师 评 语 A---------能够分工合作,体现良好的团队协作精神,完成实验要求的全部功能并运行通过,程序代码符合书写规范,实验报告叙述清晰完整,有详尽的分析和总结。 B---------能够分工合作,体现良好的团队协作精神,完成实验要求的全部功能,程序代码符合书写规范,实验报告叙述清晰完整。 C---------完成实验要求的大部分功能,实验报告良好。 D---------未按时完成实验,或者抄袭。 教师签名: 一、需求分析 本程序要求用函数实现如下算法: 直接插入排序 希尔排序 冒泡排序 快速排序 选择排序 堆排序 归并排序 基数排序 并定量分析各种排序算法在正序、逆序、少量、大量情况下的运行效率。 1.输入的形式和输入值的范围 全部待排序的数据都是整形数据,范围为0 ~ 65535,并且为无序数列。 输出的形式 输出排好序的数列。 程序所能达到的功能:本程序可以从磁盘文件读入数据,将其进行8种 方法排序,程序代码清晰,结果输出简单。 测试数据 二、概要设计 程序通过一个主函数(main)调用所有排序方法,大致的函数调用关系如下: 算法表述 三、详细设计说明 1.直接插入排序 假设待排序的记录存放在数组R[0….n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0…i-1]和R[i….n-1],其中:前一个子区间是已排好序的有序区;后一个子区间则是当前未排序的部分。直接插入排序的基本操作是将当前无序区的第1个记录R[i]插入到有序区R[0….i-1]中适当的位置,使R[0…i]变为新的有序区。 希尔排序 先取定一个小于n的整数d作为第一个增量,把表的全部记录分成d组,所有距离为d1的倍数的记录放在同一组中,在各组内进行直接插入排序;然后取第二个增量d2d1,重复上述的分组和排序,直至增量d=1,即所有记录放在同一组中进行直接插入排序为止。 冒泡排序 通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录逐渐向上升。整个算法是从最下面的记录开始,对每两个个相邻的关键字进行比较,且使关键字小的记录换至关键字较大的位置,使得经过一趟冒泡排序后,关键字最小的记录到达最上端,接着再在剩下的记录中找关键字次小的记录,并把它换至第二个位置上。依此类推,一直到所有记录都有序为止。 快速排序 在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置后,数据序列被此记录分割成两部分。所有比它大的记录放置在后一部分,所有比它小的记录放置在前一部分,并把该记录排在这两部分之间,这个过程称作一趟快速排序。之后对所有的两部分分别重复上述过程,直至每部分内只有一个记录为止。简而言之,每趟使表的第一个元素入终位,将表一分为二,对子表按递归方式继续这种划分,直至划分的子表长为1。 选择排序 基本思想:第i趟排序开始时,当前有序区和无序区分别为R[0….i-1]和R[i…n-1],该趟排序则是从无序区中选出关键字最小的记录R[k],它与无序区的第一个记录R[i]交换,使R[0…i]和R[i+1…n]分别变为新的有序区和无序区。因为每趟排序使有序区中增加一个记录,且有序区的记录均不大于无序区中记录的关键字,即第i趟排序之后R[0…i]的所有关键字等于R[i+1..n-1]中的所有关键字,所以进行n-1趟之后有R[0..n-2]的所有关键字小于等于其后所有关键字,也就是说,经过n-1趟排序后,整个表R[0..n-1]递增有序. 堆排序 堆排序是在排序过程中,将顺序表中存储的数据看成是一棵完全而叉树,利用完全二叉树中双亲结点和孩子结点之间的内在联系来选择关键字最小记录。具体做法是:把待排序的表的关键字存放在数组R[1…n]之中,将R看成一棵

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档