资源描述:
《数据结构(C语言版)实验报告-(内部排序算法比较).docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据结构与算法》实验报告一、需求分析问题描述:在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。基本要求:(l)对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。(2)待排序表的表长不小于;其中的数据要用伪随机数程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。(3)最后要对结果作简单分析,
2、包括对各组数据得出结果波动大小的解释。数据测试:二.概要设计1.程序所需的抽象数据类型的定义:typedefintBOOL;//说明BOOL是int的别名typedefstructStudentData{intnum;//存放关键字}Data;typedefstructLinkList{intLength;//数组长度DataRecord[MAXSIZE];//用数组存放所有的随机数}LinkListintRandArray[MAXSIZE];//定义长度为MAXSIZE的随机数组voidRandomNum()//随机生成函数vo
3、idInitLinkList(LinkList*L)//初始化链表BOOLLT(inti,intj,int*CmpNum)//比较i和j的大小voidDisplay(LinkList*L)//显示输出函数voidShellSort(LinkList*L,intdlta[],intt,int*CmpNum,int*ChgNum)//希尔排序voidQuickSort(LinkList*L,int*CmpNum,int*ChgNum)//快速排序voidHeapSort(LinkList*L,int*CmpNum,int*ChgNum
4、)//堆排序voidBubbleSort(LinkList*L,int*CmpNum,int*ChgNum)//冒泡排序voidSelSort(LinkList*L,int*CmpNum,int*ChgNum)//选择排序voidCompare(LinkList*L,int*CmpNum,int*ChgNum)//比较所有排序2.各程序模块之间的层次(调用)关系:一、详细设计typedefintBOOL;//定义标识符关键字BOOL别名为inttypedefstructStudentData//记录数据类型{intnum;//定义
5、关键字类型}Data;//排序的记录数据类型定义typedefstructLinkList//记录线性表{intLength;//定义表长DataRecord[MAXSIZE];//表长记录最大值}LinkList;//排序的记录线性表类型定义intRandArray[MAXSIZE];//定义随机数组类型及最大值/******************随机生成函数********************/voidRandomNum(){inti;srand((int)time(NULL));//用伪随机数程序产生伪随机数for(i
6、=0;i小于MAXSIZE;i++)RandArray[i]<=(int)rand();返回;}/*****************初始化链表**********************/voidInitLinkList(LinkList*L)//初始化链表{inti;memset(L,0,sizeof(LinkList));RandomNum();for(i=0;i小于Record[i].num<=RandArray[i];L->Length<=i;}BOOLLT(inti,intj,int*Cm
7、pNum){(*CmpNum)++;若iLength;i++)fprintf(f,"%d",L->Record[i].num);通过文件指针f关闭文件;一、调试分析1.调试过程中遇到的问题及经验体会:在本次程序的编写和调试过程中,
8、我曾多次修改代码,并根据调试显示的界面一次次调整代码。在调试成功之前,我的程序因为3个错误而无法运行,在经过完整并且仔细的检查后,发现3处错误分别是没有定义变量就直接套用、忘记加指针符号、忘记在嵌套语句后加大括号,这些看似不显眼的小问题却导致整个程