ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:249.88KB ,
资源ID:13431053      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13431053.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(排序综合课程设计报告Word文档格式.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

排序综合课程设计报告Word文档格式.docx

1、本系统拟实现以下功能:1.直接插入排序2.希尔排序3.快速排序4.堆排序5.结果保存6.计算排序时间系统要求采用VC6.0工具进行开发实现。任务要求 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用c语言设计一个排序综合系统。完成课程设计报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。参考文献1 数据结构. 严蔚敏,吴伟民 编著. 清华大学出版社. 2007年03月2 数据结构、算法和应用:C+语言描术. (美)萨尼(Sahni,S.) 著,汪诗林 等译. 机械工业出版社.2005年03月审查意见指导教师签字:教研室主任签字: 2010 年 6 月24 日 说明:本

2、表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页信息科学和工程 学院课程设计成绩评价表课程名称:数据结构课程设计设计题目:排序序号评审项目分 数满分标准说明1内 容思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。2创 新内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解3完整性、实用性整体构思合理,理论依据充分,设计完整,实用性强4数据准确、可靠数据准确,公式推导正确5规 范 性设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定6纪 律 性能很好的遵守各项纪律,设计过

3、程认真;7答 辩准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准确。在规定的时间内作完报告。总 分综合意见 指导教师 年 月 日 1、 需求分析 1.1、直接插入排序思路:设有一组关键字K1,K2,.,Kn,排序开始变认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列, 让K3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列.1.2、希尔排序思路:先取一个正整数d1(d1n),把全部记录分成d1个组,所有距离为d1的倍数的记录看成是一组,然后在各组内进

4、行插入排序;然后取d2(d2=1),即所有记录成为一个组为此.一般选d1约为n/2,d2为d1/2,.,di=11.3、快速排序:(递归和非递归)以第一个关键字K1为控制字,将K1、K2、.Kn分成两个子区,使左区的有关键字小于等于K1,右区所有关键字大于等于K1,最后控制居两个子区中间的适当位置。在子区内数据尚处于无序状态。将右区首、尾指针保存入栈,对左区进行和第(1)步相类似的处理,又得到它的左子区和右子区,控制字区中。重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的处理,直到栈空分区处理函数hoare首先用两个指针i、j分别指向首、尾两个关键字,i=1,j=8。

5、如对(46、56、14、43、95、10、19、72)。第一个关键字46作为控制字,该关键字所属的记录另存储在一个x变量中。从文件右端元素rj.key开始和控制字x.key相比较,当rj.key大于等于x.key时,rj不移动,修改指针j,j-,直到rj.keyx.key,把记录rj移动到文件左边i所指向的位置;然后在文件左边修改i指针,i+,让ri.key和x.key相比较,当ri.key小于等于x.key时,ri不移动,修改指针i,i-,直到ri.keyx.key, 把记录ri移动到文件右边j所指向的位置;然后在文件右边修改j指针j-。重复上面的步骤.1.4、堆排序把n个记录存于向量r之中

6、,把它看成完全二叉树,此时关键字序列不一定满足堆的关系。堆排序大体分为两步处理:初建堆,从堆的定义出发,当i=1、2、。、2/n时应满足ki=k2i和ki=k2i+1.所以先取i=n/2(它一定是第n个结点的双亲编号),将以i结点为根的子树调整为堆,然后令i=i-1,将以不结点为根的子树调整为堆。此时可能会反复调整某些结点,直到i=1为止,堆初步建成。堆排序,首先输出堆顶元素(一般是最小值),让堆中最后一个元素上移到原堆顶位置,然后恢复堆。因为经过第一步输出堆顶元素的操作后,往往破坏了堆关系,所以要恢复堆;重复执行输出堆顶元素、堆尾元素上移和恢复堆的步骤。2、 概要设计 2.1、头文件 #in

7、cludestdlib.hcstdlibtime.h2.2 、ADT struct element int key;list20;struct rnode int point;2.3、各种操作函数:(1)创建一个数组函数:int creat();(2)输出数组函数:void print(struct element a20,int n);(3)保存函数:void save(struct element aSIZE,int n, char ) (4)直接插入排序函数:void insert_sort(element a, int n)(5)希尔排序函数:void shell(struct ele

8、ment a20,int n);(6)快速排序函数(分区处理函数):int hoare(struct element a20,int l,int h);(7)非递归的快速排序函数:void quick1(struct element a20,int n);(8)递归的快速排序函数:void quick2(struct element a20,int l,int h);(9)堆排序(调整堆的函数):void heap(struct element a20,int i,int m);(10)堆排序(主体函数):void heapsort(struct element a20,int n);(11)

9、时间函数:start = clock();end = clock();2.4、主函数Void main()接受命令(选择要执行的操作);处理命令;输出结果;3、 详细设计 3.1、程序源代码:#define SIZE 1000000listSIZE;/创建一个数组/int creat() int i,n; int num; n=0; printf(请输入元素个数:); scanf(%d,&num); for( i = 0;i num; i+ ) listn.key = rand() % 10000; n+; return(n);/输出数组/void print(struct element a

10、SIZE,int n) int i; for(i=0;in;i+)%5d,ai .key);n/保存到文件/ int m_wr=0; / 写入TXT文件变量 FILE *fp; if ( ( fp = fopen ( , w ) ) = NULL ) errorn for (int m=0; m m+ ) m_wr = am.key; fprintf ( fp, %d , m_wr ); / 写入TXT中 fclose ( fp );/ 直接插入排序/ int i, j; element next; for(i=1; i=0 & next.key =1;i-) ai.key=ai-1.key;

11、 k=n/2; while(k=1) for(i=k+1;=n; a0.key=ai.key; j=i-k; while(aj.keya0.key)&(j=0) aj+k.key=aj.key; j=j-k; aj+k=a0; k=k/2; ai.key=ai+1.key;输出希尔排序的结果:/快速排序/int hoare(struct element aSIZE,int l,int h)/分区处理函数 int i,j; struct element x; i=l; j=h; x.key=ai.key; do while(i=x.key) j-; if(ij) ai.key=aj.key; i+; wh

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1