计算机科学技术系
实 验 报 告
专业名称 计算机科学技术
课程名称 数结构算法
项目名称 实验八序表排序实验
班 级
学 号 1
姓 名
组员
实验日期
实验八 序表排序实验
实验题目:希尔排序设计建表函数函数求输出趟排序结果通运行验证
1问题分析
程序求希尔排序设计建表函数函数求输出趟排序结果通运行验证
完成该实验需4子务:
定义序表存储结构
建立序表
定义ShellSort()函数序表L增量序列di[0]di[n1]进行希尔排序
定义ShellInsert()函数序表L做趟希尔插入排序
函数中调函数完成操作
测试数设计:
49 52 65 97 35 13 27 50
2概设计
实现述程序功需:定义序表结构建立序表输入表长度输入表中元素 定义ShellSort()ShellInsert()函数实现简单序查找算法ShellSort()函数调ShellInsert()函数实现排序返回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>last1
printf(请输入表长)
scanf(d&i)
if(i>0){
printf(请输入表中元素\n)
for(L>last1L>last
scanf(d&L>r[L>last])
}
}
(3)定义ShellSort()函数序表L增量序列di[0]di[n1]进行希尔排序
Seqlist *ShellSort(Seqlist *Lint di[]int n){
int ij
for(i0i
printf(第d趟希尔排序增量d排序结果\ni+1di[i])
for(int j1j
printf(2d L>r[j])
printf(\n)
}
return L
}
(4)定义ShellInsert()函数序表L做趟希尔插入排序
void ShellInsert(Seqlist *Lint delta){
int ijk
for(i1i
L>r[0]L>r[j]
kjdelta
while(L>r[0]
L>r[k+delta]L>r[k]
kkdelta
}
L>r[k+delta]L>r[0]
}
}
}
(5)函数中调函数完成操作
int main()
{
Seqlist *L
int b[3]{421}
L(Seqlist *)malloc(sizeof(Seqlist))
SqLset(L)
LShellSort(Lb3)
printf(终希尔排序结果\n)
for(int i1i
printf(2d L>r[i])
return 0
}
4调试分析
编译错误
5户说明
程序名class2exeDEBUG文件夹里面运行环境Visual c++ 60
6测试结果
7附录
#include malloch
#include stdioh
#define maxlen 50
typedef struct{ 定义序表
int r[maxlen]
int last
}Seqlist
void SqLset(Seqlist *L){ 输入表长度输入表中元素
int i
L>last1
printf(请输入表长)
scanf(d&i)
if(i>0){
printf(请输入表中元素\n)
for(L>last1L>last
scanf(d&L>r[L>last])
}
}
void ShellInsert(Seqlist *Lint delta){
序表L做趟希尔插入排序delta该趟排序增量
int ijk
for(i1i
L>r[0]L>r[j]
kjdelta
while(L>r[0]
L>r[k+delta]L>r[k]
kkdelta
}
L>r[k+delta]L>r[0]
}
}
}
Seqlist *ShellSort(Seqlist *Lint di[]int n){
序表L增量序列di[0]di[n1]进行希尔排序
int ij
for(i0i
printf(第d趟希尔排序增量d排序结果\ni+1di[i])
for(int j1j
printf(2d L>r[j])
printf(\n)
}
return L
}
int main()
{
Seqlist *L
int b[3]{421}
L(Seqlist *)malloc(sizeof(Seqlist))
SqLset(L)
LShellSort(Lb3)
printf(终希尔排序结果\n)
for(int i1i
printf(2d L>r[i])
return 0
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档