数据结构课程设计—综合排序(共14页).doc





《数据结构课程设计—综合排序(共14页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计—综合排序(共14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 东华理工大学课程设计报告课程设计题目: 综合排序的设计学生姓名:何杨班 级:专 业:信息与计算科学指导教师:郭树蕻 2014年 12 月 13 日 目录摘要一、题目的内容及要求-4二、需求分析-4三、概要设计-5四、四种排序源代码详细设计-5五、程序输出的结果-10六、运行结果及分析-12七、收获及体会-13八、参考文献-14摘 要数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义
2、。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。排序算法是数据结构学科经典的内容,其中内部排序现有的算法有很多种,其中包含冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序等,各有其特点。对排序算法比较的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次
3、数作为度量。特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑用比较的次数作为复杂性的度量。关键字:数据结构;算法比较;比较次数;时间复杂度一、题目的内容及要求排序综合利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。要求:(1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存
4、在不同的文件中。(2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。(3)如果采用4种或4种以上的方法者,可适当加分。二、需求分析2.1 问题描述 此次的任务要求是输入20000个以上的随机整数,对这些数进行多种方法进行排序。(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。 约束:程序可由用户自行设定排序数的个数,但排序数具体值需要由计算机生成,然后用三种以上的排序方法对随机数组进行排序,每一种排序方法执行后需统计出数据移动次数以判断排序方法的对比随机数组的执行优劣性。另:用户自行算出每一种排序方法的时间
5、复杂度与空间复杂度。 2.2 基本要求2.2.1输入的形式和输入值的范围;设定的随机数据的范围为20000以上,用户自定义随机数的个数n,随机数的数据类型均为整形。2.2.2输出的形式;程序是以一个完整的有序数组来进行输出。2.2.3程序所达到的功能:将一个无序数组进行排序随机生成20000以上个随机整数,对这些数进行多种方法进行排序。分别采用以下方法实现上述问题求解(可采用的方法有简单排序、希尔排序、冒泡排序、快速排序这四种排序方法)。三、概要设计3.1可排序表的抽象数据类型定义:typedef int KeyType; /关键字为整型typedef int OtherType; /关键字为
6、整型typedef structKeyType key; /关键字为KeyType型OtherType other_data;RecordType; /定义一个RecordType型结构体,存放关键字void quicksort(RecordType a,int left,int right)/快速排序void bubbleSort(RecordType a,int length)/冒泡排序void shellSort(RecordType a,int n)/希尔排序void BinSort (RecordType r, int length)/折半插入排序void main()/主函数运行入
7、口四、四种排序源代码详细设计:4.1快速排序模块:void quicksort(RecordType a,int left,int right)RecordType t;int i,j,temp; if(leftright) return; temp=aleft.key; i=left; j=right; while(i!=j) while(aj.key=temp & ij) j-; while(ai.key=temp & ij) i+; if(ij) t=ai; ai=aj; aj=t; aleft = ai; ai.key = temp; quicksort(a,left,i-1);/继续
8、处理左边的,这是一个递归的过程 quicksort(a,i+1,right);/继续处理右边的,这是一个递归的过程 /* 快速排序算法 */ 4.2冒泡排序模块:/此处是一次冒泡排序过程,在主函数中会通过循环调用此冒泡函数过程void bubbleSort(RecordType a,int length)int i,temp; for(i=1;iai+1.key) temp = ai.key; ai.key=ai+1.key; ai+1.key=temp; /* 冒泡排序算法 */ 4.3希尔排序模块:void shellSort(RecordType a,int n)int i, j, te
9、mp; int gap = 0;while (gap 0) for ( i = gap; i = 0 ) & ( aj+1.key temp )aj + gap+1.key = aj+1.key;j = j - gap;aj+gap+1.key = temp;gap = ( gap - 1 ) / 3; 4.4希尔折半插入排序模块:/*折半插入排序法*/void BinSort (RecordType r, int length)/*对记录数组r进行折半插入排序,length为数组的长度*/int i,j;RecordType x;int low,high,mid;for ( i=2; i=l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 综合 排序 14

限制150内