题目3排序综合报告课件.docx
《题目3排序综合报告课件.docx》由会员分享,可在线阅读,更多相关《题目3排序综合报告课件.docx(28页珍藏版)》请在冰豆网上搜索。
题目3排序综合报告课件
理学院
课程设计说明书
课程名称:
数据结构与算法A设计实践
课程代码:
6015059
题目三:
排序综合
开始时间:
2015年12月28日
完成时间:
2016年01月10日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
数据结构与算法A设计实践任务书
学院名称:
理学院课程代码:
_6015059________
专业:
信科年级:
2012
一、设计题目
排序综合(限最多1人完成)
二、主要内容
利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。
三、具体要求及提交的材料
1)至少采用4种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。
并把排序后的结果保存在不同的文件中。
2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
如果采用4种或4种以上的方法者,可适当加分。
测试数据及测试结果请在上交的资料中写明;必须上机调试通过
按《数据结构课程设计大纲》中的要求完成课程设计报告格式。
设计结束后,每个学生必须上交的材料有:
1《课程设计报告》打印稿一份2.课程设计的源代码电子文档一份
四、主要技术路线提示
无。
五、进度安排
共计两周时间,建议进度安排如下:
1.选题,应该在上机实验之前完成2.需求分析、概要设计可分配4学时完成
2.详细设计可分配4学时4.调试和分析可分配10学时。
2学时的机动,可提前安排部分提前结束任务的学生答辩
六、推荐参考资料
1.冯博琴等编著,《软件技术基础》(修改版),西安交通大学出版社,1997
2.严蔚敏等著,《数据结构》,清华大学出版社,2003
3.李芸芳等著,《软件技术基础》(第二版),清华大学出版社,2000
4.徐孝凯等著,《数据结构(C语言描述)》,清华大学出版社,2004
指导教师签名日期年月日
系主任审核日期年月日
摘要
排序(sorting是计箅机程序设计的一种重要操作,它的功能是将一组任意顺序数据元素(记录),根据某一个(或几个)关键字按一定的顺序里新排列成为有序的序列。
由于待排序的记录数量不同,使得排序过程中涉及的存储器的不同,可将排序方法分为两大类:
一类是内部排序,指的是待排序的记录存放在计算机随机存储器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需要对外存进行访问的排序过程。
本次课程设计主要是关于内部排序的。
内部排序的方法很多,但就其全面性能而言,很难提出一种被认为是最好的方法,每一种方法都有各自的优缺点,适合在不同的环境(如记录的初始排列状态等)下使用。
本次课程设计就是内部排序中的几个常用排序方法。
分析了排序的实质,排序的应用,排序的分类,利用C语言采用数组存储结构编程实现了本排序综合系统,该系统包含了几种常见的排序方法,有直接插入排序、希尔排序、冒泡排序、快速排序、简单排序。
关键词:
内部排序,外部排序,重新排列,关键字
1引言
1.1问题的提出
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。
分内部排序和外部排序。
若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。
反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。
内部排序的过程是一个逐步扩大记录的有序序列长度的过程。
排序算法是数据结构学科经典的内容,其中内部排序现有的算法有很多种,其中包含冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序等,各有其特点。
对排序算法比较的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。
特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。
当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。
究竟采用哪种度量方法比较合适要根据具体情况而定。
在下面的讨论中我们主要考虑所用时间作为复杂性的度量。
1.2C语言
C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,有时一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。
1.3C语言发展过程
1973年,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
1.4任务与分析
前面分析了排序的种类以及过程,因此,本系统实现了几种常用的排序方法,包括:
直接插入排序、希尔排序、冒泡排序、非递归的快速排序、简单排序。
2系统分析
2.1功能需求
2.1.1总体要求
任务:
机函数产生N个随机整数(20000以上),对这作数进行多种方法进行排序。
要求:
2.1.2本人所做模块
通过对任务的要求分析,我将任务分成了几个模块,从而实现了任务的总体要求。
包括了输入模块、选择排序方法模块、输出模块。
其中:
1、输入模块
利用随机函数产生N个数(20000以上),产生的数据个数由用户自己输入。
2、选择排序方法模块
在菜单中通过输入相应的选项编号来选择采用何种算法排序,包括的排序算法有:
直接插入排序、希尔排序、冒泡排序、快速排序、简单排序。
3、输出模块
输出排序前的,或者排序后的数据元素到屏幕上显示,并且输出以某种算法排序后的数据元素到文件中保存。
最后让主函数对这几个模块进行调用,从而实现全部功能。
2.2数据需求
利用随机函数产生的随机数。
3详细设计与分析
3.1设计思路
1、直接插入排序
思路:
设有一组关键字{K1,K2,……,Kn},排序开始便认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列,让K3插入到表长为2的有序序列,使之成为个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的冇序序列。
2、希尔排序
先取一个正整数dl(dl3、冒泡排序思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第n个和第n-1个数,将小数放前,大数放后,然后比较第n-1个数和第n-2个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最小的数放到了最前。在第二趟:仍从第n个数开始比较,将小数放前,大数放后,一直比较到第二个数(第一的位置上已经是最小的),第二趟结束,在数第二的位置上得到一个新的最小数(其实在整个数列中是第二小的数)。如此下去,重复以上过程,直至最终完成排序。用二循环实现,外循环变量设i,内循环变量设为j。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识。4、快速排序思路:以第一个关键字K1为控制字,将[K1,K2..Kn]分成两个子区,使左区的所有关键字小于等于K1,右区所有关键字大于等于K1,在子区内数据尚处于无序状态。将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它的左子区和右子区。重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的处理,直到栈空。5、简单排序思路:在n个记录中,用两重循环,外层循环i从第一个元素a[0]开始至最后一个元素a[n-l],内层循环j从外层循环所值元素a[i]的下—个元素a[jl=a[i+l]开始至最后一个元素a[n-l]搜索,只要找到比a[i]小的元素,便与a[i]交换,如此重复执行操作,当外层循环完毕后,全部记录就排序完成了。3.2整体设计方案此课题是研究的是排序问题,为了直观和方便,画出流程图如下图1:图1程序总流程图 通过流程图可以从中看出操作过程以及函数间的调用关系。3.3各种操作函数根据模块的划分,将函数对模块进行实现,主要函数如下:(1)创建一个数组函数:intcreat()(2)输出数组函数:voidprint(structelementa[],intn)(3)保存函数:voidsave(structelementa[],intn,charfilename[])(4)直接插入排序函数:voidinsertsort(structelementa[],intn)(5)希尔排序函数:voidshellsort(structelementa[],intn)(6)冒泡排序函数:voidbublesort(structelementa[],intn)(7)快速排序分区处理:intpartition(structelementa[],intlow,inthigh)(8)快速排序函数:voidquicksort(structelementa[],intlow,inthigh)(9)简单排序函数:voidselesort(structelementa[],intn)3.4主函数//==========通过该函数对其他函数的调用,实现系统功能int_tmain(intargc,_TCHAR*argv[]){intnum,c;boolflag=0;clock_tstart,end;charfile1[300]="直接插入排序.txt";charfile2[300]="希尔排序.txt";charfile3[300]="冒泡排序.txt";charfile4[300]="快速排序.txt";charfile5[300]="选择排序.txt";while(1){menu();printf("请输入操作选项:");scanf("%d",&c);if(c!=1&&flag==0)printf("处理错误,请先产生随机数...\n");else{switch(c){case1:num=creat();print(list,num);printf("\n");flag=1;break;case2:start=clock();insertsort(list,num);end=clock();printf("直接插入排序后的结果:\n");print(list,num);save(list,num,file1);printf("TheTime:%dms\n",end-start);printf("\n");break;case3:start=clock();shellsort(list,num);end=clock();printf("希尔排序后的结果:\n");print(list,num);save(list,num,file2);printf("TheTime:%dms\n",end-start);printf("\n");break;case4:start=clock();bublesort(list,num);end=clock();printf("冒泡排序后的结果:\n");print(list,num);save(list,num,file3);printf("TheTime:%dms\n",end-start);printf("\n");break;case5:start=clock();quicksort(list,0,num-1);end=clock();printf("快速排序完成!\n");printf("快速排序后的结果:\n");print(list,num);save(list,num,file4);printf("TheTime:%dms\n",end-start);printf("\n");break;case6:start=clock();selesort(list,num);end=clock();printf("选择排序后的结果:\n");print(list,num);save(list,num,file5);printf("TheTime:%dms\n",end-start);printf("\n");break;case0:exit(1);default:printf("输入错误,请重新输入...\n");}}}system("pause");return0;}3.5编码//=========数据类型定义#definesize1000000structelement{intkey;}list[size];//==========直接插入排序模块voidinsertsort(structelementa[],intn){inti,j;structelementx;for(i=1;iif(a[i].key{x=a[i];a[i]=a[i-1];for(j=i-1;x.keya[j+1]=a[j];a[j+1]=x;}printf("直接插入排序完成!\n");}//=========希尔排序模块voidshellsort(structelementa[],intn){inti,j,dk;structelementx;dk=n/2;while(dk>0){for(i=dk;iif(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
3、冒泡排序
依次比较相邻的两个数,将小数放在前面,大数放在后面。
即在第一趟:
首先比较第n个和第n-1个数,将小数放前,大数放后,然后比较第n-1个数和第n-2个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
至此第一趟结束,将最小的数放到了最前。
在第二趟:
仍从第n个数开始比较,将小数放前,大数放后,一直比较到第二个数(第一的位置上已经是最小的),第二趟结束,在数第二的位置上得到一个新的最小数(其实在整个数列中是第二小的数)。
如此下去,重复以上过程,直至最终完成排序。
用二循环实现,外循环变量设i,内循环变量设为j。
每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识。
4、快速排序
思路:
以第一个关键字K1为控制字,将[K1,K2..Kn]分成两个子区,使左区的所有关键字小于等于K1,右区所有关键字大于等于K1,在子区内数据尚处于无序状态。
将右区首、尾指针保存入栈,对左区进行与第
(1)步相类似的处理,又得到它的左子区和右子区。
重复第
(1)、
(2)步,直到左区处理完毕。
然后退栈对一个个子区进行相类似的处理,直到栈空。
5、简单排序
在n个记录中,用两重循环,外层循环i从第一个元素a[0]开始至最后一个元素a[n-l],内层循环j从外层循环所值元素a[i]的下—个元素a[jl=a[i+l]开始至最后一个元素a[n-l]搜索,只要找到比a[i]小的元素,便与a[i]交换,如此重复执行操作,当外层循环完毕后,全部记录就排序完成了。
3.2整体设计方案
此课题是研究的是排序问题,为了直观和方便,画出流程图如下图1:
图1程序总流程图
通过流程图可以从中看出操作过程以及函数间的调用关系。
3.3各种操作函数
根据模块的划分,将函数对模块进行实现,主要函数如下:
(1)创建一个数组函数:
intcreat()
(2)输出数组函数:
voidprint(structelementa[],intn)
(3)保存函数:
voidsave(structelementa[],intn,charfilename[])
(4)直接插入排序函数:
voidinsertsort(structelementa[],intn)
(5)希尔排序函数:
voidshellsort(structelementa[],intn)
(6)冒泡排序函数:
voidbublesort(structelementa[],intn)
(7)快速排序分区处理:
intpartition(structelementa[],intlow,inthigh)
(8)快速排序函数:
voidquicksort(structelementa[],intlow,inthigh)
(9)简单排序函数:
voidselesort(structelementa[],intn)
3.4主函数
//==========通过该函数对其他函数的调用,实现系统功能
int_tmain(intargc,_TCHAR*argv[])
{
intnum,c;
boolflag=0;
clock_tstart,end;
charfile1[300]="直接插入排序.txt";
charfile2[300]="希尔排序.txt";
charfile3[300]="冒泡排序.txt";
charfile4[300]="快速排序.txt";
charfile5[300]="选择排序.txt";
while
(1)
menu();
printf("请输入操作选项:
");
scanf("%d",&c);
if(c!
=1&&flag==0)
printf("处理错误,请先产生随机数...\n");
else
switch(c)
case1:
num=creat();
print(list,num);
printf("\n");
flag=1;
break;
case2:
start=clock();
insertsort(list,num);
end=clock();
printf("直接插入排序后的结果:
\n");
save(list,num,file1);
printf("TheTime:
%dms\n",end-start);
case3:
shellsort(list,num);
printf("希尔排序后的结果:
save(list,num,file2);
case4:
bublesort(list,num);
printf("冒泡排序后的结果:
save(list,num,file3);
case5:
quicksort(list,0,num-1);
printf("快速排序完成!
printf("快速排序后的结果:
save(list,num,file4);
case6:
selesort(list,num);
printf("选择排序后的结果:
save(list,num,file5);
case0:
exit
(1);
default:
printf("输入错误,请重新输入...\n");
}
system("pause");
return0;
3.5编码
//=========数据类型定义
#definesize1000000
structelement
intkey;
}list[size];
//==========直接插入排序模块
inti,j;
structelementx;
for(i=1;iif(a[i].key{x=a[i];a[i]=a[i-1];for(j=i-1;x.keya[j+1]=a[j];a[j+1]=x;}printf("直接插入排序完成!\n");}//=========希尔排序模块voidshellsort(structelementa[],intn){inti,j,dk;structelementx;dk=n/2;while(dk>0){for(i=dk;iif(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
if(a[i].key{x=a[i];a[i]=a[i-1];for(j=i-1;x.keya[j+1]=a[j];a[j+1]=x;}printf("直接插入排序完成!\n");}//=========希尔排序模块voidshellsort(structelementa[],intn){inti,j,dk;structelementx;dk=n/2;while(dk>0){for(i=dk;iif(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
x=a[i];
a[i]=a[i-1];
for(j=i-1;x.keya[j+1]=a[j];a[j+1]=x;}printf("直接插入排序完成!\n");}//=========希尔排序模块voidshellsort(structelementa[],intn){inti,j,dk;structelementx;dk=n/2;while(dk>0){for(i=dk;iif(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
a[j+1]=a[j];
a[j+1]=x;
printf("直接插入排序完成!
//=========希尔排序模块
inti,j,dk;
dk=n/2;
while(dk>0)
for(i=dk;iif(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
if(a[i].key{x=a[i];for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
for(j=i-dk;j>0&&x.keya[j+dk]=a[j];a[j+dk]=x;}dk=dk/2;}printf("希尔排序完成!\n");}//=========冒泡排序模块voidbublesort(structelementa[],intn){inti,j;structelementtemp;for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
a[j+dk]=a[j];
a[j+dk]=x;
dk=dk/2;
printf("希尔排序完成!
//=========冒泡排序模块
structelementtemp;
for(i=0;i{for(j=n;j>=i;j--)if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
for(j=n;j>=i;j--)
if(a[j+1].key{temp=a[j+1];a[j+1]=a[j];a[j]=temp;}}printf("冒泡排序完成!\n");}//==========快速排序模块intpartition(structelementa[],intlow,inthigh){inti,j;structelementx;i=low;j=high;x=a[i];while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
temp=a[j+1];
a[j]=temp;
printf("冒泡排序完成!
//==========快速排序模块
i=low;
j=high;
while(i{while((i=x.key))j--;if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
while((i=x.key))
j--;
if(i{a[i]=a[j];i++;}while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
a[i]=a[j];
i++;
while((ii++;if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
if(i{a[j]=a[i];j--;}}a[i]=x;returni;}voidquicksort(structelementa[],intlow,inthigh){inti;if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
a[j]=a[i];
a[i]=x;
returni;
inti;
if(low{i=partition(a,low,high);quicksort(a,low,i-1);quicksort(a,i+1,high);}}//==========简单排序模块voidselesort(structelementa[],intn){inti,j,z;structelementtemp;for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
i=partition(a,low,high);
quicksort(a,low,i-1);
quicksort(a,i+1,high);
//==========简单排序模块
inti,j,z;
for(i=0;i{z=i;for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
z=i;
for(j=1+i;j{if(a[z].key>a[j].key)z=j;}if(z!=i){temp=a[i];a[i]=a[z];a[z]=temp;}}printf("选择排序完成!\n");}4测试系统对于所有执行过程,通过图片最好说明问题了:程序开始如图2所示:图2开始界面图4.1设计测试数据用随机函数产生的20个随机数作为测试实例:图3产生随机数4.2测试结果与分析图4直接插入排序结果图图5希尔排序结果图图6冒泡排序结果图图7快速排序结果图图8简单排序结果图结论通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。排序算法共有五个:插入排序、希尔排序、冒泡排序、快速排序、选择排序。同时也实现了随机数的生成。并把排序后的结果保存在不同的文件中。虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。熟练的撑握C语言的文件读写操作。掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:思考问题,写出解决方案,写出伪代码,完成代码,调试程序。不像以前那样开始就直接写代码。致谢这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!老师教导我们:首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!希望在今后学习中大家一起互相学习,共同进步!编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献[1]严蔚敏等编著.数据结构(C语言版).北京:淸华大学出版社.2003[2]严蔚敏等编著.数据结构题集(C语言版>.北京:清华大学出版社.2003[3]李春葆等编著.数据结构教程(C语言版>.北京:淸华大学出版社.2006[4]朱立华等编著.C语言程序设计.北京:人民邮电出版社.2009附录#include"stdafx.h"#include#include#include#definesize1000000//===========^调用库函数structelement{intkey;}list[size];//==========^结构体模板intcreat(){inti;intnum;printf("请输入元素的个数:");scanf("%d",&num);if(num>999999){printf("输入超界!\n");return0;}for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
if(a[z].key>a[j].key)
z=j;
if(z!
=i)
temp=a[i];
a[i]=a[z];
a[z]=temp;
printf("选择排序完成!
4测试系统
对于所有执行过程,通过图片最好说明问题了:
程序开始如图2所示:
图2开始界面图
4.1设计测试数据
用随机函数产生的20个随机数作为测试实例:
图3产生随机数
4.2测试结果与分析
图4直接插入排序结果图
图5希尔排序结果图
图6冒泡排序结果图
图7快速排序结果图
图8简单排序结果图
结论
通过这次课程设计的学习让我学会了许多,让我对我们的专业知识有了很大理解!
在这次课程设计中,独立完成了在数组存储结构下的每种排序算法。
排序算法共有五个:
插入排序、希尔排序、冒泡排序、快速排序、选择排序。
同时也实现了随机数的生成。
虽然在算法完成的过程中也在网上査阅了一些资料,但对这次课程设计的成果还是比较满意的。
同时在完成这个课程设计后,我也学到了很多知识,并能熟练的掌握他们了。
熟练的撑握C语言的文件读写操作。
掌握了每种排序算法的基本思想,并学会了编写程序的一般步骤:
思考问题,写出解决方案,写出伪代码,完成代码,调试程序。
不像以前那样开始就直接写代码。
致谢
这次课程设计能够顺利完成,当然要感谢老师和同学的帮助。
没有老师的悉心指导和督促,就不可能这么顺利和按时完成任务,真的非常感谢!
老师教导我们:
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。
在整个过程中周围的同学也给了不少帮助,而且帮忙解决了很多想不通的问题,在此真的非常感激每个人!
希望在今后学习中大家一起互相学习,共同进步!
编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
参考文献
[1]严蔚敏等编著.数据结构(C语言版).北京:
淸华大学出版社.2003
[2]严蔚敏等编著.数据结构题集(C语言版>.北京:
清华大学出版社.2003
[3]李春葆等编著.数据结构教程(C语言版>.北京:
淸华大学出版社.2006
[4]朱立华等编著.C语言程序设计.北京:
人民邮电出版社.2009
附录
#include"stdafx.h"
#include
//===========^调用库函数
//==========^结构体模板
intnum;
printf("请输入元素的个数:
scanf("%d",&num);
if(num>999999)
printf("输入超界!
for(i=0;ilist[i].key=rand()%10000;return(num);}//==========^创建一个数组voidprint(structelementa[],intn){inti;for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
list[i].key=rand()%10000;
return(num);
//==========^创建一个数组
for(i=0;iprintf("%5d",a[i].key);printf("\n");}//==========^输出数组voidsave(structelementa[],intn,charfilename[]){intwj=0;FILE*fp;if((fp=fopen(filename,"w"))==NULL)printf("filewritererror\n");for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
printf("%5d",a[i].key);
//==========^输出数组
intwj=0;
FILE*fp;
if((fp=fopen(filename,"w"))==NULL)
printf("filewritererror\n");
for(intm=0;m{wj=a[m].key;fprintf(fp,"%d%d",wj);}fclose(fp);}//=========^保存到文件voidinsertsort(structelementa[],intn){inti,j;
wj=a[m].key;
fprintf(fp,"%d%d",wj);
fclose(fp);
//=========^保存到文件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1