实验八 顺序表的排序实验报告.doc

实验八 顺序表的排序实验报告.doc

ID:55294571

大小:58.16 KB

页数:9页

时间:2020-05-09

实验八 顺序表的排序实验报告.doc_第1页
实验八 顺序表的排序实验报告.doc_第2页
实验八 顺序表的排序实验报告.doc_第3页
实验八 顺序表的排序实验报告.doc_第4页
实验八 顺序表的排序实验报告.doc_第5页
资源描述:

《实验八 顺序表的排序实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据结构与算法项目名称实验八顺序表的排序实验班级学号1姓名同组人员实验日期实验八顺序表的排序实验实验题目:为希尔排序设计建表函数和主函数,要求输出每一趟排序的结果,并通过运行来验证1.问题分析本程序要求为希尔排序设计建表函数和主函数,要求输出每一趟排序的结果,并通过运行来验证完成该实验需要以下4个子任务:定义一个顺序表的存储结构建立顺序表定义ShellSort()函数对顺序表L按增量序列di[0]-di[n-1]进行希尔排序定义ShellInsert()函数对顺序

2、表L做一趟希尔插入排序在主函数中调用函数完成操作测试数据设计如下:49526597351327502.概要设计为了实现上述程序功能,需要:定义一个顺序表的结构建立一个顺序表输入表的长度,再输入表中的元素定义ShellSort()ShellInsert()函数实现简单顺序查找算法,在ShellSort()函数调用ShellInsert()函数实现排序。返回L在主函数中调用函数实现操作本程序包含3个函数:1.主函数:main()2.建顺序表:SqLset()3.希尔排序:ShellSort()4.ShellInsert()函

3、数各函数关系如下:Sqlset()Main()ShellSort()ShellInsert()3、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。(1)顺序表#definemaxlen50typedefstruct{//定义顺序表intr[maxlen];intlast;}Seqlist;Sequenlist*L;(2)建立一个顺序表,输入表的长度,再输入表中的元素voidSqLset(Seqlist*L){//输入表的长度,再输入表中的元素inti;L->last=-1;

4、printf("请输入表长:");scanf("%d",&i);if(i>0){printf("请输入表中元素:");for(L->last=1;L->last<=i;L->last++)scanf("%d",&L->r[L->last]);}}(3)定义ShellSort()函数对顺序表L按增量序列di[0]-di[n-1]进行希尔排序Seqlist*ShellSort(Seqlist*L,intdi[],intn){inti,j;for(i=0;i<=n-1;i++){ShellInsert(L,di[i]);p

5、rintf("第%d趟希尔排序,增量为%d,排序之后的结果",i+1,di[i]);for(intj=1;jlast;j++)printf("%2d",L->r[j]);printf("");}returnL;}(4)定义ShellInsert()函数对顺序表L做一趟希尔插入排序voidShellInsert(Seqlist*L,intdelta){inti,j,k;for(i=1;i<=delta;i++){for(j=i+delta;jlast;j=j+delta){L->r[0]=L->r[

6、j];k=j-delta;while(L->r[0]r[k]&&k>0){L->r[k+delta]=L->r[k];k=k-delta;}L->r[k+delta]=L->r[0];}}}(5)在主函数中调用函数完成操作intmain(){Seqlist*L;intb[3]={4,2,1};L=(Seqlist*)malloc(sizeof(Seqlist));SqLset(L);L=ShellSort(L,b,3);printf("最终希尔排序之后的结果");for(inti=1;ilast;i+

7、+)printf("%2d",L->r[i]);return0;}4、调试分析编译无错误5、用户使用说明程序名为class2.exe,在DEBUG文件夹里面。运行环境Visualc++6.0。6、测试结果7、附录#include"malloc.h"#include"stdio.h"#definemaxlen50typedefstruct{//定义顺序表intr[maxlen];intlast;}Seqlist;voidSqLset(Seqlist*L){//输入表的长度,再输入表中的元素inti;L->last=-1;p

8、rintf("请输入表长:");scanf("%d",&i);if(i>0){printf("请输入表中元素:");for(L->last=1;L->last<=i;L->last++)scanf("%d",&L->r[L->last]);}}voidShellInsert(Seqlist*L,intdelta)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。