数据结构内部排序比较

数据结构实训报告

实验名称:数据结构 题目:内部排序比较

专业: 班级: 姓名: 学号: 实验日期: 一、实验目的:通过随机数据比较各内部排序算法的关键字比较次数和关键字移动的次数,以取得直观感受。训练学生综合设计算法能力。

二、实验要求:待排序长度不小于100,数据可有随机函数产生,用五组不同输入数据做比较,比较的指标为关键字参加比较的次数和关键字移动的次数;对结果做简单的分析,包括各组数据得出结果的解释;设计程序用顺序存储。

三、实验内容

1、待排序表的表长不小于100;至少要用5组不同的输入数据作比较;排序算法不少于3种;

2 、待排序的元素的关键字为整数;

3 、比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换以3次计)。

4、演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标的列表,以便比较各种排序的优劣。

5、最后要对结果作简单的分析。

6、测试数据:用伪随机数产生程序产生。

四、实验编程结果或过程: 1. 数据定义 typedef struct { typedef struct { KeyType key; RedType r[MAXSIZE+1]; }RedType; int length; }SqList; 2. 函数如下,代码详见文件“排序比较.cpp” int Create_Sq(SqList &L) void QSort(SqList &L,int low,int high)//递 归形式的快速排序算法 void Bubble_sort(SqList &L)//冒泡排序 void QuickSort(SqList &L) void InsertSort(SqList &L)//插入排序 void ShellInsert(SqList &L,int dk)//希尔排void SelectSort(SqList &L) //简单选择排序 序 int Partition(SqList &L,int low,int high) void ShellSort(SqList &L,int dlta[ ])

3. 运行测试结果,运行结果无误,如下图

语速个数为20

元素个数为100

错误调试 无。 影响排序的因素:

1、待排序的记录数目n 的大小。

2、记录本身数据量的大小,也就是记录中除关键字外的其他信息量的大小。 3、关键字的结构及其分布情况。

4、对排序稳定性的要求 五、实验总结:

(1)实验中的存在问题和提高

1、存在问题:程序有待增强。 2、提高:界面处理简洁。 (2)收获与体会:

1、随机数的生成;

2、排序的算法的比较次数与移动次数的计算 3、各种排序的算法

附录 源程序

/*一.选择排序算法: 算法基本原理:

一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,否则交换min与i位置上数。 算法实现:*/ #include

//选择排序,如果第一个数字小于后面的则向后移动,依次类推 //该排序时不稳定的,时间复杂度是N平方 int main() {

int array[10] = {112,4,2,3,5,33,6,7,8,9};//定义一个数组 int length = sizeof(array)/sizeof(array[0]);//得到数组的长度

int min, k=0, s=0, i=0, j=0;//k保存临时结果,s,i,j为循环变量 //选择排序开始 for(i=0;i

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4