数据结构-实验报告内排序+

时间:2024.3.31

(封面)

学 院:国际经贸学院

课程名称:数据结构

专业班级:09电子商务

姓 名:

学 号:

学生实验报告

(经管类专业用)

一、实验目的及要求:

1、目的

掌握内排序的方法。

2、内容及要求

实验题10.1 编写一个程序实现直接插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程

实验题10.2 编写一个程序实现希尔插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程

实验题10.3 编写一个程序实现冒泡排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程

实验题10.4 编写一个程序实现快速排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程

实验题10.5 编写一个程序实现直接选择排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程

二、仪器用具

三、实验方法与步骤:

10.1

#include

#define MAXE 20

typedef int KeyType;

typedef char InfoType[10];

typedef struct

{

KeyType key;

InfoType data;

} RecType;

void InsertSort(RecType R[],int n)

{

int i,j,k;

RecType temp;

for (i=1;i

{

temp=R[i];

j=i-1;

while (j>=0 && temp.key

{

R[j+1]=R[j];

j--;

}

R[j+1]=temp;

printf(" i=%d ",i);

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("\n");

printf(" first main word ");

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

InsertSort(R,n);

printf(" result ");

for (k=0;k

printf("%3d",R[k].key);

printf("\n\n");

getch();

}

10.2

#include

#define MAXE 20

typedef int KeyType;

typedef char InfoType[10];

typedef struct

{

KeyType key;

InfoType data;

} RecType;

void ShellSort(RecType R[],int n)

{

int i,j,d,k;

RecType temp;

d=n/2;

while (d>0)

{

for (i=d;i

{

j=i-d;

while (j>=0 && R[j].key>R[j+d].key)

{

temp=R[j];

R[j]=R[j+d];

R[j+d]=temp;

j=j-d;

}

}

printf(" d=%d: ",d);

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

d=d/2;

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("\n");

printf("first main word ");

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

ShellSort(R,n);

printf(" result ");

for (k=0;k

printf("%3d",R[k].key);

printf("\n\n");

getch();

}

10.3

#include

#define MAXE 20

typedef int KeyType;

typedef char InfoType[10];

typedef struct

{

KeyType key;

InfoType data;

} RecType;

void BubbleSort(RecType R[],int n)

{

int i,j,k;

RecType temp;

for (i=0;i

{

for (j=n-1;j>i;j--)

if (R[j].key

{

temp=R[j];

R[j]=R[j-1];

R[j-1]=temp;

}

printf(" i=%d ",i);

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("\n");

printf(" first main word ");

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

BubbleSort(R,n);

printf(" result ");

for (k=0;k

printf("%2d",R[k].key);

printf("\n\n");

getch();

}

10.4

#include

#define MAXE 20

typedef int KeyType;

typedef char InfoType[10];

typedef struct

{

KeyType key;

InfoType data;

} RecType;

void QuickSort(RecType R[],int s,int t)

{

int i=s,j=t,k;

RecType temp;

if (s

{

temp=R[s];

while (i!=j)

{

while (j>i && R[j].key>temp.key)

j--;

if (i

{

R[i]=R[j];

i++;

}

while (i

i++;

if (i

{

R[j]=R[i];

j--; }

}

R[i]=temp;

printf(" ");

for (k=0;k<10;k++)

if (k==i)

printf(" [%d]",R[k].key);

else

printf("%4d",R[k].key);

printf("\n");

QuickSort(R,s,i-1);

QuickSort(R,i+1,t);

}

}

void main()

{

int i,k,n=10;

KeyType a[]={6,8,7,9,0,1,3,2,4,5};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("\n");

printf(" first main word ");

for (k=0;k

printf("%4d",R[k].key);

printf("\n");

QuickSort(R,0,n-1);

printf(" result ");

for (k=0;k

printf("%4d",R[k].key);

printf("\n\n");

getch();

}

10.5

#include

#define MAXE 20

typedef int KeyType;

typedef char InfoType[10];

typedef struct

{

KeyType key;

InfoType data;

} RecType;

void SelectSort(RecType R[],int n)

{

int i,j,k,l;

RecType temp;

for (i=0;i

{

k=i;

for (j=i+1;j

if (R[j].key

k=j;

if (k!=i)

{

temp=R[i];R[i]=R[k];R[k]=temp;

}

printf(" i=%d ",i);

for (l=0;l

printf("%2d",R[l].key);

printf("\n");

}

}

void main()

{

int i,k,n=10,m=5;

KeyType a[]={6,8,7,9,0,1,3,2,4,5};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("\n");

printf(" first main word ");

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

SelectSort(R,n);

printf(" result ");

for (k=0;k

printf("%2d",R[k].key);

printf("\n\n");

getch();

}

四、实验结果与数据处理:

10.1

10.2

10.3

10.4

10.5

五、讨论与结论

要掌握每种算法,并能运行,整个过程要认真,细心。

六、指导教师评语及成绩:

评语:

成绩: 指导教师签名:

批阅日期:



第二篇:数据结构内排序实验报告


一、实验目的

1、了解内排序都是在内存中进行的。

2、为了提高数据的查找速度,需要对数据进行排序。

3、掌握内排序的方法。

二、实验内容

1、设计一个程序exp10—1.cpp实现直接插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

(1) 源程序如下所示:

//文件名:exp10-1.cpp

#include

#define MAXE 20 //线性表中最多元素个数

typedef int KeyType;

typedef char InfoType[10];

typedef struct //记录类型

{

KeyType key; //关键字项

InfoType data; //其他数据项,类型为InfoType

} RecType;

void InsertSort(RecType R[],int n) //R[0..n-1]按递增有序进行直接插入排序

{

int i,j,k;

RecType temp;

for (i=1;i

{

temp=R[i];

j=i-1; //从右向左在有序区R[0..i-1]中找R[i]的插入位置

while (j>=0 && temp.key

{

R[j+1]=R[j]; //将关键字大于R[i].key的记录后移

j--;

}

R[j+1]=temp; //j+1处插入R[i]

printf("i=%d,",i); //输出每一趟的排序结果

printf("插入%d,结果为: ",temp);

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("初始关键字: "); //输出初始关键字序列

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

InsertSort(R,n);

printf("最后结果: "); //输出初始关键字序列

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

}

(2) 运行的结果如下图所示:

2、设计一个程序exp10—2.cpp实现希尔插入排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

(1) 源程序如下所示:

//文件名:exp10-2.cpp

#include

#define MAXE 20 //线性表中最多元素个数

typedef int KeyType;

typedef char InfoType[10];

typedef struct //记录类型

{

KeyType key; //关键字项

InfoType data; //其他数据项,类型为InfoType

} RecType;

void ShellSort(RecType R[],int n) //希尔排序算法

{

int i,j,d,k;

RecType temp;

d=n/2; //d取初值n/2

while (d>0)

{

for (i=d;iR[d..n-1]分别插入各组当前有序区中

{

j=i-d;

while (j>=0 && R[j].key>R[j+d].key)

{

temp=R[j]; //R[j]R[j+d]交换

R[j]=R[j+d];

R[j+d]=temp;

j=j-d;

}

}

printf("d=%d: ",d); //输出每一趟的排序结果

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

d=d/2; //递减增量d

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("初始关键字: "); //输出初始关键字序列

for (k=0;k

printf("%3d",R[k].key);

printf("\n");

ShellSort(R,n);

printf("最后结果: "); //输出初始关键字序列

for (k=0;k

printf("%3d",R[k].key);

printf("\n\n");

}

(2) 结果如下图所示:

3、设计一个程序exp10—3.cpp实现冒泡排序算法,并输出{9,8,7,6,5,4,3,2,1,0}的排序过程。

(1) 源程序如下所示:

//文件名:exp10-3.cpp

#include

#define MAXE 20 //线性表中最多元素个数

typedef int KeyType;

typedef char InfoType[10];

typedef struct //记录类型

{

KeyType key; //关键字项

InfoType data; //其他数据项,类型为InfoType

} RecType;

void BubbleSort(RecType R[],int n) //冒泡排序算法

{

int i,j,k;

RecType temp;

for (i=0;i

{

for (j=n-1;j>i;j--) //比较,找出本趟最小关键字的记录

if (R[j].key

{

temp=R[j]; //R[j]R[j-1]进行交换,将最小关键字记录前移

R[j]=R[j-1];

R[j-1]=temp;

}

printf("i=%d,冒出的最小关键字:%d,结果为: ",i,R[i].key); //输出每一趟的排序结果

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

}

}

void main()

{

int i,k,n=10;

KeyType a[]={9,8,7,6,5,4,3,2,1,0};

RecType R[MAXE];

for (i=0;i

R[i].key=a[i];

printf("初始关键字: "); //输出初始关键字序列

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

BubbleSort(R,n);

printf("最后结果: "); //输出初始关键字序列

for (k=0;k

printf("%2d",R[k].key);

printf("\n");

}

(2) 结果如下图所示:

更多相关推荐:
《数据结构》实验报告——排序

数据结构实验报告排序实验题目输入十个数从插入排序快速排序选择排序三类算法中各选一种编程实现实验所使用的数据结构内容及编程思路1插入排序直接插入排序的基本操作是将一个记录到已排好序的有序表中从而得到一个新的记录增...

数据结构排序实验报告

数据结构课程设计报告实验五排序一需求分析本演示程序用C60编写完成各种排序的实现对输入的一组数字实现不同的排序方法对其由小到大顺序输出1分别对直接插入排序希尔排序冒泡排序快速排序选择排序堆排序算法进行编写2对存...

数据结构排序算法实验报告

数据结构课程设计报告

数据结构实验报告——排序

1实验要求实验目的学习实现对比各种排序算法掌握各种排序算法的优劣以及各种算法使用的情况实验内容使用简单数组实现下面各种排序算法并进行比较排序算法1插入排序2希尔排序3冒泡排序4快速排序5简单选择排序6堆排序选作...

数据结构实验8排序

实验八排序一实验目的1熟悉掌握教材中所介绍的几种排序方法2学会分析各种内排序算法的性能二实验内容1随机产生20位整数2输入序列编写程序按下列排序方法将序列从小到大排序并输出1冒泡排序2快速排序3纪录每种方法比较...

数据结构快速排序实验报告

一问题描述在操作系统中我们总是希望以最短的时间处理完所有的任务但事情总是要一件件地做任务也要操作系统一件件地处理当操作系统处理一件任务时其他待处理的任务就需要等待虽然所有任务的处理时间不能降低但我们可以安排它们...

数据结构 内排序实验报告

通达学院实验报告20xx20xx学年第2学期课程名称数据结构实验名称基本内排序算法的验证和性能比较专业软件工程学生姓名班级学号10003102指导教师陈蕾日期20xx年5月29日南京邮电大学通达学院

数据结构 实验报告 排序

实验报告实验目的1掌握各种排序方法的排序过程2了解一些排序算法的实现实验内容学生的考试成绩表由学生的学号姓名和成绩组成设计一个程序对给定的n个学生信1按分数高低排序打印出每个学生在考试中的排名分数相同的为同一名...

应用数据结构实验报告

学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级学生学号应用数据结构管理学院20xx20xx学年第2学期1实验四2345678910111213

数据结构实验报告4拓扑排序

01510800班郭哲学号20xx0259实验报告01510800班郭哲学号20xx0259101510800班郭哲学号20xx0259实验名称拓扑排序实验原理利用拓扑排序的原理读入图并将图按照拓扑排序的顺序输...

本科生《算法与数据结构》实验报告3

算法与数据结构实验报告学院专业姓名学号实验1ADTList线性表3学时问题描述线性表是典型的线性结构实现ADTList并在此基础上实现两个集合的交运算或并运算实验目的1掌握线性表链表存储结构2掌握在单链表上基本...

数据结构试验报告---排序(直接插入和希尔排序)

排序1直接插入排序代码includeltstdiohgtincludeltmallochgtdefineMAXSIZE20typedefintkeytypetypedefstructkeytypekeyredt...

数据结构排序实验报告(34篇)