预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共21页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《数据构造》课程设计报告专业班级姓名学号指引教师起止时间课程设计:排序综合一、任务描述运用随机函数产生n个随机整数(0以上),对这些数进行各种办法进行排序。(1)至少采用三种办法实现上述问题求解(提示,可采用办法有插入排序、希尔排序、起泡排序、迅速排序、选取排序、堆排序、归并排序)。并把排序后成果保存在不同文献中。(2)记录每一种排序办法性能(以上机运营程序所耗费时间为准进行对比),找出其中两种较快办法。规定:依照以上任务阐明,设计程序完毕功能。二、问题分析1、功能分析分析设计课题规定,规定编程实现如下功能:(1)随机生成N个整数,存储到线性表中;(2)起泡排序并计算所需时间;(3)简朴选取排序并计算时间;(4)希尔排序并计算时间;(5)直接插入排序并计算所需时间;(6)时间效率比较。2、数据对象分析存储数据线性表应为顺序存储。三、数据构造设计使用顺序表实现,关于定义如下:typedefintStatus;typedefintKeyType;//设排序码为整型量typedefintInfoType;typedefstruct{//定义被排序记录构造类型KeyTypekey;//排序码InfoTypeotherinfo;//其他数据项}RedType;typedefstruct{RedType*r;//存储带排序记录顺序表//r[0]作哨兵或缓冲区intlength;//顺序表长度}SqList;//定义顺序表类型四、功能设计(一)主控菜单设计为实现通各种排序功能,一方面设计一种具有各种菜单项主控菜单程序,然后再为这些菜单项配上相应功能。程序运营后,给出5个菜单项内容和输入提示,如下:起泡排序简朴选取排序希尔排序4.直接插入排序0.退出系统(二)程序模块构造由课题规定可将程序划分为如下几种模块(即实现程序功能所需函数):主控菜单项选取函数menu()创立排序表函数InitList_Sq()起泡排序函数Bubble_sort()简朴选取排序函数SelectSort()希尔排序函数ShellSort();对顺序表L进行直接插入排序函数Insertsort()(三)函数调用关系程序重要构造(函数调用关系)如下图所示。其中main()是主函数,它负责调用各函数。进行调用菜单函数menu(),依照选取项0~4调用相应函数。main()函数使for循环实现重复选取。其循环构造如下:for(;;){longstart,end;switch(menu()){case1:printf("*起泡排序*\n");start=clock();Bubble_sort(L);end=clock();printf("%dms\n",end-start);fp=fopen("D:起泡排序.txt","w");if(fp==NULL)//打开文献失败{printf("打开文献失败!\n");exit(1);}for(i=1;i<=L.length;i++)fprintf(fp,"%d",L.r[i]);fclose(fp);break;case2:printf("*简朴选取排序*\n");start=clock();SelectSort(L);end=clock();printf("%dms\n",end-start);fp=fopen("D:直接插入排序.txt","w");if(fp==NULL)//打开文献失败{printf("简朴选取排序!\n");exit(1);}for(i=1;i<=L.length;i++)fprintf(fp,"%d",L.r[i]);fclose(fp);break;case3:printf("*希尔排序*\n");start=clock();ShellSort(L,an,14);end=clock();printf("%dms\n",end-start);fp=fopen("D:希尔排序.txt","w");if(fp==NULL)//打开文献失败{printf("打开文献失败!\n");exit(1);}for(i=1;i<=L.length;i++)fprintf(fp,"%d",L.r[i]);fclose(fp);break;case4:printf("*直接插入排序*\n");start=clock();Insertsort(L);end=clock();printf("%dms\n",end-start);fp=fopen("D:直接插入排序.txt","w");if(fp==NULL)//打开文献失败{printf("打开文献失败!\n");exit(1);}for(i=1;i<=L.length;i++)fprintf(fp,"%d",L.r[i]);fclose(fp);break;case0:printf