欢迎来到天天文库
浏览记录
ID:35807767
大小:335.00 KB
页数:14页
时间:2019-04-19
《数据结构排序综合课程设计报告_2 (1).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数据结构》课程设计报告———排序综合专业通信工程班级11302小组成员柯愈来课程设计:排序综合一、任务与要求本案例要求能够产生20000个以上随机证书,并对这些证书采取多种方法进行排序,并显示排序结果,比较各种算法的效率。(1)为了提高效率,所产生的随机证书用文件保存,供各排序算法共用;(1)为了更好地进行比较,采取3种以上方法实现排序,并分别保存排序结果;(2)记录每种排序所耗费的时间;(3)比较各种排序算法的效率,得出效率最高者,分析该算法效率高的原因。二、问题分析1、模块功能分析结构体模块:在结构体
2、中定义数组,关键字为key,为整形。整数产生模块:MakeList(),自动产生20000以内的随机数,存入数组中。排序模块:有6个子函数分别代表6种排序方式,六种排序方式为(1)InsertSort()直接插入排序(2)BubleSort()冒泡排序(3)QuickSort()快速排(4)SeleSort()直接选择排序(5)ShellSort()希尔排序(6)HeapSort()堆排序显示模块:输出随机产生的整数,和排序后的整数。函数调用模块:在此模块中voidmain()定义结构体中的数据并调用所需子
3、函数。2、数据对象分析排序方式:直接插入排序、冒泡排序、快速排序、直接选择排序、希尔排序、堆排序显示排序后的的数据和时间效率。三、数据结构设计定义结构体typedefstruct{intkey;}RECNODE;叙述各种排序函数,并相应写出各种排序的算法及过程。定义数组的值,并输出所记录的值。按1~6数字键选择函数,可查找出各种排序的结果。输出排序结果及所用时间和交换次数按0键退出四、功能设计(一)主控菜单设计为实现排序的操作功能,首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
4、程序运行后,给出菜单项的内容和输入提示,如下:************************菜单************************1---直接插入排序**2---冒泡排序**3---快速排序**4---直接选择排序**5---堆排序**6---希尔排序**0---退出***********************(二)程序模块结构由课题要求可将程序划分为以下几个模块(即实现程序功能所需的函数):l主控菜单项选择函数menu_select()lInsertSort()直接插入排序lBubleS
5、ort()冒泡排序lQuickSort()快速排序lSeleSort()直接选择排序lShellSort()希尔排序lHeapSort()堆排序(三)函数调用关系程序的主要结构(函数调用关系)如下图所示。SeleSort其中main()是主函数,它进行菜单驱动,根据选择项1~0调用相应的函数。(四)函数实现#defineMAXSIZE20000#include#include#include#includetypedefstruc
6、t{intkey;}RECNODE;intb,t;intMakeList(RECNODE*r){intj,k;time_tt1;/*用于存放时间*/time(&t1);/*取得当前系统时间*/srand(t1);for(k=0;k7、"%d",r[i+1].key);printf("");}voidDealoutList(RECNODE*r,intn){inti;printf("排序后的数据:");for(i=0;i8、;i<=n;i++){r[0]=r[i];j=i-1;while(r[0].key=i;j--)if(r[j+1].ke
7、"%d",r[i+1].key);printf("");}voidDealoutList(RECNODE*r,intn){inti;printf("排序后的数据:");for(i=0;i8、;i<=n;i++){r[0]=r[i];j=i-1;while(r[0].key=i;j--)if(r[j+1].ke
8、;i<=n;i++){r[0]=r[i];j=i-1;while(r[0].key=i;j--)if(r[j+1].ke
此文档下载收益归作者所有