数据结构内部排序比较分析

发布 2021-05-30 13:12:28 阅读 4371

数据结构实训报告。

实验名称:数据结构。

题目:内部排序比较。

专业班级: 姓名: 学号: 实验日期:

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

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

三、实验内容。

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

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

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

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

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

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

四、实验编程结果或过程:

1. 数据定义。

typedef struct ;/定义一个数组。

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

if(min!=i)

/选择排序结束,输出显示排序的结果。

for(s=0; s;

int length = sizeof(array)/sizeof(array[0]);

int k=0, s=0, i=0, j=0, m=0;

/冒泡排序开始。

for(i = length-1;i>0;i=k)

for(j=0, k=0;j;

int length = sizeof(array)/sizeof(array[0]);

paixu(array,s,length-1);

for(s=0;s{

printf("%d ",array[s]);

return 0;

*四。插入排序。

概述:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为⊙(㎡是稳定的排序方法。

插入算法(insertion sort)把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的正确位置中。

包括:直接插入排序,折半插入排序,链表插入排序,shell排序。

算法基本原理:

假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止。这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性。

算法描述:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

1. 从第一个元素开始,该元素可以认为已经被排序。

2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。

3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。

4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。

5. 将新元素插入到该位置中。

6. 重复步骤2

如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。

算法实现:*/

#include <>

数据结构内部排序算法比较

目录。摘要 1 1绪论 12系统分析 1 2.1 功能需求 1 2.2数据需求 1 2.3 性能需求 2 3总体设计 2 3.1系统设计方案 2 3.2功能模块设计 2 4详细设计 3 4.1 数据结构定义 3 4.2伪随机产生数据模块 4 4.3简单选择排序模块 6 4.4起泡排序模块 7 4.5...

数据结构排序方法的比较

实验报告。计算机科学与技术学院。20 17年12 月 12 日。实验项目名称 排序方法的比较。一 实验目的。熟练掌握常用的内排序方法并加以比较。二 实验内容。设一组数据,分别用直接插入排序,冒泡排序法,快速排序法,希尔排序,简单选择排序法。三 实验操作步骤。1.直接插入排序。在前一段有序条件下将下一...

数据结构课设 排序算法比较

6 排序算法比较 必做 设计要求 利用随机函数产生n个随机整数 n 500,1000,1500,2500,30000 利用直接插入排序 折半插入排序,起泡排序 快速排序 选择排序堆排序,基数排序七种排序方法。可添加其它排序方法 进行排序 结果为由小到大的顺序 并统计每一种排序所耗费的时间。各个函数均...