实验八 顺序表的排序实验报告
更新时间:2024-03-14 08:03:01 阅读量: 综合文库 文档下载
- 实验八中推荐度:
- 相关推荐
计算机科学与技术系
实 验 报 告
专业名称 计算机科学与技术 课程名称 数据结构与算法 项目名称实验八顺序表的排序实验
班 级
学 号 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;j
printf(\ printf(\
}
return L; }
(4)定义ShellInsert()函数对顺序表L做一趟希尔插入排序
void ShellInsert(Seqlist *L,int delta){ int i,j,k; for(i=1;i<=delta;i++){ for(j=i+delta;j
(5)在主函数中调用函数完成操作 int main()
{
Seqlist *L;
int b[3]={4,2,1};
L=(Seqlist *)malloc(sizeof(Seqlist)); SqLset(L);
L=ShellSort(L,b,3);
printf(\最终希尔排序之后的结果\\n\ for(int i=1;i
return 0;
}
4、调试分析 编译无错误
5、用户使用说明
程序名为class2.exe,在DEBUG文件夹里面。运行环境Visual c++ 6.0。
6、测试结果
7、附录
#include \#include \#define maxlen 50 typedef struct{ //定义顺序表 int r[maxlen]; int last; }Seqlist;
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(\ } }
void ShellInsert(Seqlist *L,int delta){ //对顺序表L做一趟希尔插入排序,delta为该趟排序的增量 int i,j,k; for(i=1;i<=delta;i++){
for(j=i+delta;j
Seqlist *ShellSort(Seqlist *L,int di[],int n){ //对顺序表L按增量序列di[0]-di[n-1]进行希尔排序 int i,j; for(i=0;i<=n-1;i++){ ShellInsert(L,di[i]); printf(\第%d趟希尔排序,增量为%d,排序之后的结果\\n\ for(int j=1;j
int main() { Seqlist *L; int b[3]={4,2,1}; L=(Seqlist *)malloc(sizeof(Seqlist)); SqLset(L); L=ShellSort(L,b,3); printf(\最终希尔排序之后的结果\\n\ for(int i=1;i
for(j=i+delta;j
Seqlist *ShellSort(Seqlist *L,int di[],int n){ //对顺序表L按增量序列di[0]-di[n-1]进行希尔排序 int i,j; for(i=0;i<=n-1;i++){ ShellInsert(L,di[i]); printf(\第%d趟希尔排序,增量为%d,排序之后的结果\\n\ for(int j=1;j
int main() { Seqlist *L; int b[3]={4,2,1}; L=(Seqlist *)malloc(sizeof(Seqlist)); SqLset(L); L=ShellSort(L,b,3); printf(\最终希尔排序之后的结果\\n\ for(int i=1;i
正在阅读:
实验八 顺序表的排序实验报告03-14
做风车的作文450字06-30
立邦刷新服务怎么样,帮你把大海带回家!10-18
2016年地理信息系统(GIS)调研及发展前景分析12-27
专接本习题06-19
人生有三大悲剧 选择06-02
加油词02-17
搭积木作文600字07-01
benet2.0 S1全套复习题库06-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 顺序
- 排序
- 报告