数据结构课程设计报告--内部排序算法比较

数据结构课程设计报告--内部排序算法比较

ID:35617603

大小:223.50 KB

页数:26页

时间:2019-04-02

数据结构课程设计报告--内部排序算法比较_第1页
数据结构课程设计报告--内部排序算法比较_第2页
数据结构课程设计报告--内部排序算法比较_第3页
数据结构课程设计报告--内部排序算法比较_第4页
数据结构课程设计报告--内部排序算法比较_第5页
资源描述:

《数据结构课程设计报告--内部排序算法比较》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《数据结构》课程设计报告专业:班级:姓名:学号:完成日期:二0一0年12月29日26目录n1、问题描述………………………………………..3n2、基本要求……………………………………….3n3、测试数据………………………………………3n4、算法思想………………………………………4n5、模块设计………………………………………5n6、流程图…………………………………………6n7、源程序…………………………………………7n8、测试结果………………………………………..21n9、参考书目……………………………………….24n10、心得

2、体会………………………………………24.26内部排序算法比较1.问题描述:任务:试通过随机的数据比较各算法的关键字比较次数和关键字移动次数要求:(1)对以下10种常用的内部排序算法进行比较:直接插入排序、折半插入排序、二路插入排序、希尔排序、起泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序。(2)待排序表的表长不少于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参见的比较次数和关键字移动次数(关键字交换计为3次移动)。2.基本要求:利用随机函数产生100个随机整

3、数,利用直接插入排序、折半插入排序、二路插入排序、希尔排序、起泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序十种排序方法进行排序(结果为由小到大的顺序),并统计比较次数CMPNUM和关键字移动次数CHGNUM.3.测试数据:由随机产生器决定。4.算法思想://直接插入排序voidInitLinkList(LinkList*L)算法思想:从第二个开始,经后面的关键字以此插入它前面已经有序的表中,从而得到一个新的、关键字增一的有序表,最终可将关键字全部排好序。//折半插入排序26voidBInsertSort(Lin

4、kList*L,int*CmpNum,int*ChgNum)算法思想:这是对直接插入排序的改进,在关键字向前面有序表插入时,井陉这般查找,增快查找插入位置的速度。 //2-路插入排序voidInsertSortBinary(LinkList*L,int*CmpNum,int*ChgNum)算法思想: 2-路插入排序是在折半插入排序的基础上再改进之,其目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。//希尔排序voidShellInsert(LinkList*L,intdk,int*CmpNum,int*Ch

5、gNum)算法思想:先将整个带排序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的关键字“基本有序”时,在对全体记录进行一次直接插入排序。//起泡排序voidBubbleSort(LinkList*L,int*CmpNum,int*ChgNum)算法思想:这是一种简单的“选择”排序的方法,将前一个关键字和后一个关键字比较,关键字大的和小的交换位置,经过一趟交换便得到了最大关键字,以此类推,经过N-1趟后,便可排序完毕。//快速排序voidQuickSort(LinkList*L,int*CmpNum,int*Chg

6、Num)算法思想:这是对冒泡排序的一种改进,同过一趟排序将待排记录分割成为独立的两部分,其中一部分的关键字均比另一部分小,则可分别对这两部分记录继续这种排序,达到有序。26//简单选择排序intSelectMinKey(LinkList*L,intk,int*CmpNum)算法思想:对待排记录进行N-1次选择,分别选出第1至第N-1大的关键字,序列变为有序了。每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录//堆排序voidHeapSort(LinkList*L,int*CmpNum,int*ChgNu

7、m)算法思想:将待排序列排成按二叉树形式存储,使所有非终结节点的治军不大于其左右孩子的值,输出堆顶的最小元素,再将其余排成堆,以此类推,可一次选出次小的元素,最终能够排好序。//归并排序voidMergeSort(LinkList*L,int*CmpNum,int*ChgNum)算法思想:将一维数组中前后相邻的两个有序序列归并为一个有序序列。void//基数排序bases(RedType**h,int*CmpNum,int*ChgNum)voidRadixSort(LinkList*L,int*CmpNum,int*ChgN

8、um)算法思想:这是以静态链表为存储结构的排序算法,通过不断的分配关键字,收集关键字有序列,最终使整个链表有序。本程序中是把一个五位数拆成五个关键字,对每个关键字都进行一趟分配和一趟收集,当5趟下后,序列可排为有序序列。5.模块划分:模块一:存储结构structRedType{26intk

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。