candcc++课程设计.doc_第1页
candcc++课程设计.doc_第2页
candcc++课程设计.doc_第3页
candcc++课程设计.doc_第4页
candcc++课程设计.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

攀枝花学院学生课程设计(论文)题 目: 各种排序 学生姓名: 甘双丰 学 号: 201110803007所在院(系): 计算机学院 专 业: 2011级网络工程 班 级: 2011级一班 指 导 教 师: 陈三清 职称: 讲师 2012年 6 月 13 日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目各种排序1、课程设计的目的(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)问题描述:用程序实现对一组数据的排序,分别使用选择、冒泡和插入排序方法基本要求:1、可以选择按从小到大的顺序排列,也可以选择从大到小的顺序排列; 2、显示最好情况下及最坏情况下数据交换的次数; 3、可以选择一种方法排序,也可以同时选择两种及两种以上的方法排序; 4、输出每一种选择后的排序输出结果。3、主要参考文献1 潭浩强,C程序设计,清华大学出版社2 王声决,C语言程序设计,中国铁道出版社3 潭浩强,C程序设计题解与上机指导,清华大学出版社4 刘玲等,C语言程序设计应用教程,西南师范大学出版社4、课程设计工作进度计划1 潭浩强,C程序设计,清华大学出版社2 王声决,C语言程序设计,中国铁道出版社3 潭浩强,C程序设计题解与上机指导,清华大学出版社4 刘玲等,C语言程序设计应用教程,西南师范大学出版社指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日目 录摘要51 问题描述6 1.1 基本要求62 概要设计7 2.1 系统模块划分及定义7 2.2 流程图72.3 算法思想83 详细设计9 3.1 选择排序源代码9 3.2插入排序源代码9 3.3冒泡排序源代码104调试分析125测试结果136 总结14参考文献15摘要排序是计算机程序设计中的一种重要操作,在数据处理中占有极其重要的位置。有资料表明,在当今计算机系统中,CPU有50%以上的处理时间是用在数据排序上的1。排序有很多种,如插入排序、交换排序、选择排序、归并排序等。而选择法排序是其中一个比较简单而有效的排序方法,也是C语言中一维数组的经典算法。因此我们不得不熟练的掌握选择排序法。 1. 问题描述 用程序实现对一组数据的排序,分别使用选择、冒泡和插入排序方法冒泡算法特点:相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。 选择算法特点:每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。 插入算法特点:每趟从无序序列中取出第一个数插入到有序序列的合适位置,元素的最终位置在最后一趟插入后才能确定位置。也可是先用循环查找插入位置(可从前往后或从后往前),再将插入位置之后的元素(有序列中)逐个后移一个位置,最后完成插入。该算法的特点是在寻找插入位置的同时完成元素的移动。因为元素的移动必须从后往前,则可将两个操作结合在一起完成,提高算法效率。仍可进行升序或降序排序。1.1基本要求可以选择按从小到大的顺序排列,也可以选择从大到小的顺序排列;显示最好情况下及最坏情况下数据交换的次数; 可以选择一种方法排序,也可以同时选择两种及两种以上的方法排序;输出每一种选择后的排序输出结果。2. 概要设计2.1系统模块划分及定义 Include,头文件,功能是对函数进行声明。 main,主函数,功能是作为程序的入口并实现对问题的处理。 a,数组,功能是方便对main函数中的数据进行相应的处理运算。 for(,)语句,功能是对main函数中的数据进行循环比较。 scanf,printf,数据库函数,功能分别是输入原始数据,输出运行结果。2.2流程图 图 2.2.1-1 选择排序流程图图 2.2.1-2 插入排序流程图 图 2.2.1-3 冒泡排序流程图2.3算法思想 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。3. 详细设计3.1 选择排序源代码# include main() int a10,i,j,k,t,n=10; int count=0; printf(Please input 10 numbers:); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;in-1;i+) /*外循环控制趟数,n个数选n-1趟*/ k=i; /*假设当前趟的第一个数为最值,记在k中 */ for(j=i+1;jn;j+) /*从下一个数到最后一个数之间找最值*/ if(akaj) /*若其后有比最值更大的*/ k=j; /*则将其下标记在k中*/ if(k!=i) /*若k不为最初的i值,说明在其后找到比其更大的数*/ t=ak; ak=ai; ai=t; /*则交换最值和当前序列的第一个数*/ count+; printf(The sorted numbers: ); for(i=0;i10;i+) printf(%d ,ai); printf(n); printf(%dn,count);3.2插入排序源代码# include main() int a10,i,j,t,count=0; printf(Please input 10 numbers: ); for(i=0;i10;i+) scanf(%d,&ai); for(i=1;i=0 & taj ; j- ) /*在有序序列(下标0 i-1)中寻找插入位置*/ aj+1=aj; /*若未找到插入位置,则当前元素后移一个位置*/ aj+1=t; /*找到插入位置,完成插入*/ count+; printf(The sorted numbers: ); for(i=0;i10;i+) printf(%d ,ai); printf(n); printf(%dn,count);3.3冒泡排序源代码:#includemain() int i,j,temp,count=0; int a10; for(i=0;i10;i+)scanf (%d,&ai); for(j=0;j10;j+) for (i=0;i10-j;i+) if (aiai+1) temp=ai; ai=ai+1; ai+1=temp; count+; for(i=0;i10;i+) printf(%5d,ai ); printf(n); printf(交换次数:%dn,count);4. 调试分析4.1调试分析:输入参数:9 6 4 7 8 2 0 1 5 3理论排序:9 8 7 6 5 4 3 2 1 0理论排序次数:选择排序 9 次 插入排序 9 次 冒泡排序 10次5. 测试结果5.1运行结果截图: 图 5.1-1 选择排序运行结果截图 图 5.1-2 插入排序运行结果截图 图 5.1-3 冒泡排序运行结果截图6. 总结这次的程序设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。 通过本次试验巩固和加深了对C语言课程的基本知识的理解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论