1、 攀枝花学院 学生课程设计(论文) 题 目: 多种排序 学生姓名: 甘双丰 学 号: 10803007 所在院(系): 计算机学院 专 业: 级网络工程 班 级: 级一班 指 导 教 师: 陈三清 职称:
2、 讲师 6 月 13 日 攀枝花学院教务处制 攀枝花学院本科学生课程设计任务书 题 目 多种排序 1、课程设计目标 (1)巩固和加深学生对C语言课程基础知识了解和掌握; (2)掌握C语言编程和程序调试基础技能; (3)利用C语言进行简单软件设计基础思绪和方法; (4)提升利用C语言处理实际问题能力。 2、课程设计内容和要求(包含原始数据、技术要求、工作要求等) [问题描述]:用程序实现对一组数据排序,分别使用选择、冒泡和插入排序方法 [基础要求]:1、能够选择按从小到大次序排列,也能够选择从大到小次序排列;
3、 2、显示最好情况下及最坏情况下数据交换次数; 3、能够选择一个方法排序,也能够同时选择两种及两种以上方法排序; 4、输出每一个选择后排序输出结果。 3、关键参考文件 [1] 潭浩强,《C程序设计》,清华大学出版社 [2] 王声决,《C语言程序设计》,中国铁道出版社 [3] 潭浩强,《C程序设计题解和上机指导》,清华大学出版社 [4] 刘玲等,《C语言程序设计应用教程》,西南师范大学出版社 4、课程设计工作进度计划 [1] 潭浩强,《C程序设计》,清华大学出版社 [2] 王声决,《C语言程序设计》,中国铁道出
4、版社 [3] 潭浩强,《C程序设计题解和上机指导》,清华大学出版社 [4] 刘玲等,《C语言程序设计应用教程》,西南师范大学出版社 指导老师(签字) 日期 年 月 日 教研室意见: 年 月 日 学生(签字): 接收任务时间: 年 月 日 注:任务书由指导老师填写。 课程设计(论文)指导老师成绩评定表 题目名称 评分项目 分值 得分 评价内涵 工作 表现 20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,含有良好科学工作态度。 02 科学实践、调研 7 经过
5、试验、试验、查阅文件、深入生产实践等渠道获取和课程设计相关材料。 03 课题工作量 7 按期圆满完成要求任务,工作量饱满。 能力 水平 35% 04 综合利用知识能力 10 能利用所学知识和技能去发觉和处理实际问题,能正确处理试验数据,能对课题进行理论分析,得出有价值结论。 05 应用文件能力 5 能独立查阅相关文件和从事其它调研;能提出并很好地叙述课题实施方案;有搜集、加工多种信息及获取新知识能力。 06 设计(试验)能力,方案设计能力 5 能正确设计试验方案,独立进行装置安装、调试、操作等试验工作,数据正确、可靠;研究思绪清楚、完整。
6、 07 计算及计算机应用能力 5 含有较强数据运算和处理能力;能利用计算机进行资料搜集、加工、处理和辅助设计等。 08 对计算或试验结果分析能力(综合分析能力、技术经济分析能力) 10 含有较强数据搜集、分析、处理、综合能力。 结果 质量 45% 09 插图(或图纸)质量、篇幅、设计(论文)规范化程度 5 符合本专业相关规范或要求要求;规范化符合本文件第五条要求。 10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,叙述充足,结论严谨合理;试验正确,分析处理科学。 11 创新 10 对前人工作有改善或突破,或有独特
7、见解。 成绩 指导老师评语 指导老师署名: 年 月 日 目 录 摘要……………………………………………………………………………………5 1 问题描述……………………………………………………………………………6 1.1 基础要求………………………………………………………………………6 2 概要设计……………………………………………………………………………7 2.1 系统模块划分及定义……………………………………………………………7 2.2 步骤图……………
8、……………………………………………………………7 2.3 算法思想………………………………………………………………………8 3 具体设计…………………………………………………………………………9 3.1 选择排序源代码…………………………………………………………………9 3.2插入排序源代码…………………………………………………………………9 3.3冒泡排序源代码…………………………………………………………………10 4调试分析…………………………………………………………………………12 5测试结果…………………………………………………………………………13 6 总
9、结………………………………………………………………………………14 参考文件……………………………………………………………………………15 摘要 排序是计算机程序设计中一个关键操作,在数据处理中占有极其关键位置。有资料表明,在当今计算机系统中,CPU有50%以上处理时间是用在数据排序上[1]。排序有很多个,如插入排序、交换排序、选择排序、归并排序等。而选择法排序是其中一个比较简单而有效排序方法,也是C语言中一维数组经典算法。所以我们不得不熟练掌握选择排序法。
10、 1. 问题描述 用程序实现对一组数据排序,分别使用选择、冒泡和插入排序方法 冒泡算法特点:相邻元素两两比较,每趟将最值沉底即可确定一个数在结果位置,确定元素位置次序是从后往前,其它元素可能作相对位置调整。能够进行升序或降序排序。 选择算法特点:每趟是选出一个最值确定其在结果序列中位置,确定元素位置是以前往后,而每趟最多进行一次交换,其它元素相对位置不变。可进行降序排序或升序排序。 插入算法特点:每趟从无序序列中取出第一个数插入到有序序列适宜位置,元素最终位置在最终一趟插入后才能确定位置。也可是先用循环查找插入位
11、置(可以前往后或从后往前),再将插入位置以后元素(有序列中)逐一后移一个位置,最终完成插入。该算法特点是在寻求插入位置同时完成元素移动。因为元素移动必需从后往前,则可将两个操作结合在一起完成,提升算法效率。仍可进行升序或降序排序。
1.1基础要求
能够选择按从小到大次序排列,也能够选择从大到小次序排列;
显示最好情况下及最坏情况下数据交换次数;
能够选择一个方法排序,也能够同时选择两种及两种以上方法排序;
输出每一个选择后排序输出结果。
2. 概要设计
2.1系统模块划分及定义
Include
12、函数进行申明。 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)基础思想是:每一趟从待排序统计中选出关键字
13、最小统计,次序放在已排好序子文件最终,直到全部统计排序完成。
插入排序(Insertion Sort)基础思想是:每次将一个待排序统计,按其关键字大小插入到前面已经排好序子文件中合适位置,直到全部统计插入完成为止。
交换排序基础思想是:两两比较待排序统计关键字,发觉两个统计次序相反时即进行交换,直到没有反序统计为止。
3. 具体设计
3.1 选择排序源代码
# include
14、10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i 15、若k不为最初i值,说明在其后找到比其更大数*/
{ t=a[k]; a[k]=a[i]; a[i]=t; } /*则交换最值和目前序列第一个数*/
count++;
}
printf("The sorted numbers: ");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
printf("%d\n",count);
}
3.2插入排序源代码
# include 16、t=0;
printf("Please input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++) /*外循环控制趟数,n个数从第2个数开始到最终共进行n-1次插入*/
{
t=a[i]; /*将待插入数暂存于变量t中*/
for( j=i-1 ; j>=0 && t>a[j] ; j-- ) /*在有序序列(下标0 ~ i-1)中寻求插入位置*/
a[j+1]=a[j]; /*若未找到插入位置,则目前元素后移一个位置*/
17、 a[j+1]=t; /*找到插入位置,完成插入*/
count++;
}
printf("The sorted numbers: ");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
printf("%d\n",count);
}
3.3冒泡排序源代码:
#include






