综合排序.docx
- 文档编号:12658125
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:21
- 大小:121.04KB
综合排序.docx
《综合排序.docx》由会员分享,可在线阅读,更多相关《综合排序.docx(21页珍藏版)》请在冰豆网上搜索。
综合排序
课程设计(论文)任务书
软件学院 学院 08软件工程+电子商务 专 业 一 班
一、课程设计(论文)题目 各种排序算法演示
二、课程设计(论文)工作自2009年12月21日起至2009年12月26日止。
三、课程设计(论文)地点:
多媒体实验室(5-302,303)
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)熟练掌握C语言的基本知识和技能;
(2)掌握各种排序(插入、冒泡,快速排序,简单选择,堆排序)方法及适用场合,并能在解决实际问题时灵活应用;
(3)从空间和时间的角度分析各种排序;
(4)培养分析、解决问题的能力;提高学生的科技论文写作能力。
2.课程设计的任务及要求
1)基本要求:
(1)设计一个的菜单将在实现的功能显示出来,并有选择提示;
(2)分别实现直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序,堆排序算法;
(3)通过多种测试数据,对各种排序算法的时间复杂度和空间复杂度进行比较
2)创新要求:
提高算法效率,降低时间复杂度和空间复杂度
3)课程设计论文编写要求
(1)要按照课程设计模板的规格书写课程设计论文
(2)论文包括目录、正文、心得体会、参考文献等
(3)课程设计论文用B5纸统一打印,装订按学校的统一要求完成
4)答辩与评分标准:
(1)完成原理分析:
20分;
(2)完成设计过程:
40分;
(3)完成调试:
20分;
(4)回答问题:
20分。
5)参考文献:
(1)严蔚敏,吴伟民.数据结构.北京:
清华大学出版社,2006.
(2)严蔚敏、吴伟民、米宁.数据结构题集。
北京:
清华大学出版社,2006.
(3)谭浩强.C程序设计(第二版)作者:
清华大学出版社,2006.
6)课程设计进度安排
内容天数 地点
构思及收集资料2 图书馆
编程设计与调试5 实验室
撰写论文3 图书馆、实验室
学生签名:
09年12月21日
课程设计(论文)评审意见
(1)完成原理分析(20分):
优( )、良( )、中( )、一般( )、差( );
(2)设计分析 (20分):
优( )、良( )、中( )、一般( )、差( );
(3)完成调试 (20分):
优( )、良( )、中( )、一般( )、差( );
(4)翻译能力 (20分):
优( )、良( )、中( )、一般( )、差( );
(5)回答问题 (20分):
优( )、良( )、中( )、一般( )、差( );
(6)格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
职称:
讲师
09年12月28日
目 录
一、问题描述4
二、内容简介4
2.1基本要求:
4
2.2.算法思想:
4
2.3.模块划分:
4
2.4.数据结构:
5
2.5.源程序:
5
2.6.测试情况:
15
三、小结17
四、参考文献18
一、问题描述
1.如何定义数据类型,并编写书上没有的冒号排序。
2.如何编写时间算法函数计算一个排序所用的时间。
3.如何运用循环实现所有排序算法时间和空间复杂度的比较。
二、内容简介
2.1基本要求:
(1)设计一个的菜单将在实现的功能显示出来,并有选择提示
(2)分别实现直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单排序、堆排序算法;
(3)通过多种测试数据,对各种排序算法的时间复杂度和空间复杂度进行比较
2.2.算法思想:
1.自定义RECNODE结构体;
2.依次定义各种排序的算法;
3.设计一个高精度时间函数,分别测试各种排序的时间消耗;
4.在主函数中,用开关语句swtich(){case值1;break;…case值n;break;Default语句序列:
n+1;}调用各种排序算法,各种排序的时间消耗函数,从而在屏幕上输出供选择的菜单,各种排序时间和空间复杂度的比较。
2.3.模块划分:
1.输入初始数据函数:
intMakeList(RECNODE*r)
2.输出未排序前的数据函数:
voidUndealoutList(RECNODE*r,intn)
3.处理后的序列函数:
voidDealoutList(RECNODE*r,intn)
4.这种排序的算法:
voidInsertSort(RECNODE*r,intn)//直接插入排序
voidBiInsertionSort(RECNODE*r,intn){//折半插入排序
voidBubleSort(RECNODE*r,intn)//冒泡排序
intPartition(RECNODE*r,int*low,int*high)//一趟快速排序
voidQuickSort(RECNODE*r,intstart,intend)//快速排序
voidSeleSort(RECNODE*r,intn)//直接选择排序
voidShellSort(RECNODE*r,intn)//希尔排序
voidSift(RECNODE*r,inti,intm)
voidHeapSort(RECNODE*r,intn)//堆排序
5.排序时间测试函数:
doubleTInsertSort(intlen,RECNODE*a,intp)
2.4.数据结构:
1.预定义常量和自定义类型:
#defineMAXSIZE100
typedefstruct
{intkey;
}RECNODE;
2.基本函数的算法用以下形式表示:
函数类型函数名(函数参数表)//算法说明{语句序列}//函数名。
3.定义intb,t,i,j;//b为记录交换的次数,t为记录排序的趟数,i为排序的数据,j为暂存数据的临时变量。
4.输入初始数据函数中定义intk,j,k为输入数据个数,j为输入的数据。
5.快速排序中定义staticintw=0,int*low,*high。
6.在直接选择排序中定义intz,临时储存i的值。
7.在希尔排序中定义intdk,记录前后位置的增量。
8.在排序时间消耗测试的函数和主函数中定义了intp,为菜单的序号。
9.在主函数中定义intlen,为测试数据的总长度。
2.5.源程序:
#defineMAXSIZE100//一个用作示例的小顺序表的最大长度
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
typedefintStatus;/*Status是函数的类型,其值是函数结果状态代码,如OK等*/
typedefintBoolean;/*Boolean是布尔类型,其值是TRUE或FALSE*/
typedefstruct
{intkey;
}RECNODE;
intb,t;//b为记录交换的次数,t为记录排序的趟数
intMakeList(RECNODE*r)
{intj,k;
printf("请输入初始数据(每个数据以空格隔开,-1结束):
");
k=0;scanf("%d",&j);
while(j!
=-1)
{k++;r[k].key=j;
scanf("%d",&j);}
returnk;
}//输入要排序的一组数据,并且返回数据的个数,以-1为结束标志
voidUndealoutList(RECNODE*r,intn)
{inti;
printf("未排序前的数据:
");
for(i=0;i printf("%d",r[i+1].key); printf("\n");} voidDealoutList(RECNODE*r,intn) {inti; printf("排序后的数据: "); for(i=0;i printf("%d",r[i+1].key); printf("\n"); printf("交换或比较的次数: %d\n",b); printf("排序的趟数: %d\n",t);} voidInsertSort(RECNODE*r,intn)//直接插入排序// {inti,j;b=0,t=0;//b为记录交换的次数,t为记录排序的趟数 for(i=2;i<=n;i++) {r[0]=r[i];//r[0]的作用是暂存空间 j=i-1;while(r[0].key {r[j+1]=r[j];//则让大的数从后往前依次往后挪一个位置,然后让小数插入到恰当位置 j--;b++;} r[j+1]=r[0];b++;t++;}} voidBiInsertionSort(RECNODE*r,intn){//对记录序列R[1..n]作折半插入排序 intlow,high,i,j,m; for(i=2;i<=n;++i){ r[0]=r[i];//将R[i]暂存到R[0]/ low=1;high=i-1; while(low<=high){//在R[low..high]中折半查找插入的位置 m=(low+high)/2;//折半 if(r[0].key high=m-1;//插入点在低半区 elselow=m+1;//插入点在高半区} for(j=i-1;j>=high+1;--j) r[j+1]=r[j];//记录后移 r[high+1]=r[0];//插入 t++;b++}}//BInsertSort voidBubleSort(RECNODE*r,intn)//冒泡排序 {inti,j;b=0,t=0;//b为记录交换的次数,t为记录排序的趟数 RECNODEtemp;//暂寸空间 for(i=1;i {for(j=n-1;j>=i;j--)//目标数是从第一个数开始,被比较数从最后一个开始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 排序