实验八 顺序表的排序实验报告 下载本文

内容发布更新时间 : 2024/5/19 3:56:38星期一 下面是文章的全部内容请认真阅读。

计算机科学与技术系

实 验 报 告

专业名称 计算机科学与技术 课程名称 数据结构与算法 项目名称实验八顺序表的排序实验

班 级

学 号 1 姓 名

同组人员

实验日期

实验八 顺序表的排序实验

实验题目:为希尔排序设计建表函数和主函数,要求输出每一趟排序的结果,

并通过运行来验证

1.问题分析

本程序要求为希尔排序设计建表函数和主函数,要求输出每一趟排序的结果,并通过运行来验证

完成该实验需要以下4个子任务: 1定义一个顺序表的存储结构 ○

2建立顺序表 ○

3定义ShellSort()函数对顺序表L按增量序列di[0]-di[n-1]进行希尔排序 ○

4定义ShellInsert()函数对顺序表L做一趟希尔插入排序 ○

5在主函数中调用函数完成操作 ○

测试数据设计如下:

49 52 65 97 35 13 27 50

2.概要设计

1定义一个顺序表的结构○2建立一个顺序表输为了实现上述程序功能,需要:○

3定义ShellSort()ShellInsert()函数实现入表的长度,再输入表中的元素○

简单顺序查找算法,在ShellSort()函数调用ShellInsert()函数实现排序。4在主函数中调用函数实现操作 返回L○

本程序包含3个函数:

1.主函数:main()

2.建顺序表:SqLset() 3.希尔排序:ShellSort() 4.ShellInsert()函数

各函数关系如下:

Sqlset() Main ()

ShellSort() ShellInsert()

3、 详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。 (1)顺序表

#define maxlen 50 typedef struct{ //定义顺序表 int r[maxlen]; int last; }Seqlist;

Sequenlist *L;

(2) 建立一个顺序表,输入表的长度,再输入表中的元素 void SqLset(Seqlist *L){ //输入表的长度,再输入表中的元素 int i;

L->last=-1;

printf(\请输入表长:\ scanf(\ if(i>0){

printf(\请输入表中元素:\\n\

for(L->last=1;L->last<=i;L->last++) scanf(\ }

}

(3)定义ShellSort()函数对顺序表L按增量序列di[0]-di[n-1]进行希尔排序 Seqlist *ShellSort(Seqlist *L,int di[],int n){ int i,j;

for(i=0;i<=n-1;i++){

ShellInsert(L,di[i]);

printf(\第%d趟希尔排序,增量为%d,排序之后的结果\\n\

for(int j=1;jlast;j++)

printf(\ printf(\