2023年实验八顺序表的排序实验报告_第1页
2023年实验八顺序表的排序实验报告_第2页
2023年实验八顺序表的排序实验报告_第3页
2023年实验八顺序表的排序实验报告_第4页
2023年实验八顺序表的排序实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一合解考浣WL,HEFEIUNIVERSITY计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据结构与算法项目名称实验八顺序表的排序实验班级学号1姓名。。k=j-de1ta;。owhile(L—>r[0]<L->r[k]&&k>0){。L->r[k+delta]=L->r[k];°。。。k=k-delta;000JL->r[k+deIta]=L->r[0];6)))Seqlist*Shel1SortfSeqlist*L,intdi[],intn){。〃对顺序表L按增量序列di[O]-di[n・l]进行希尔排序。inti,j;0for(i=0;i<=n-l;i++){。She1llnsert(L,di[i]);-printf("第%d趟希尔排序,增量为%€1,排序之后的结果\n“,i+l,di[i]);for(intj=1;j<L->last;j++)«printf("%2d",L->r[j]);returnL;)intmain(){aSeqIist*L;intb[3]={4,2,1);oL=(Seqlist*)maIIoc(sizeoffSeqlist));oSqLset(L);。L=ShellSort(L,b,3);oprintf(*'最终希尔排序之后的结果\n");for(inti=1;i<L->last;i++)ooprintf("%2d”,L->巾]);return0;同组人员实验日期实验八顺序表的排序实验实验题目:为希尔排序设计建表函数和主函数,规定输出每一趟排序的结果,并通过运营来验证.问题分析本程序规定为希尔排序设计建表函数和主函数,规定输出每一趟排序的结果,并通过运营来验证完毕该实验需要以下4个子任务:错误!定义一个顺序表的存储结构错误!建立顺序表错误!定义She】ISort()函数对顺序表L按增量序列di[0]-di[n-l]进行希尔排序错误!定义ShellInsertO函数对顺序表L做一趟希尔插入排序错误!在主函数中调用函数完毕操作测试数据设计如下:4952659735132750.概要设计为了实现上述程序功能,需要:错误!定义一个顺序表的结构错误!建立一个顺序表输入表的长度,再输入表中的元素③定义She11SortOShe1Unsert()函数实现简朴顺序查找算法,在ShellSortO函数调用ShellInsert0函数实现排序。返回L错误!在主函数中调用函数实现操作本程序包含3个函数:.主函数:main().建顺序表:SqLset().希尔排序:SheUSort().Shelllnsert()函数各函数关系如下:Sq1set()

Main>She11Sort()MainShel1Insert()3、具体设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。(1)顺序表#definemax1en50typedefstruct{6typedefstruct{6。typedefstruct{6。。//typedefstruct{6。。//定义顺序表}Seqlist:Sequenlist*L;(2)建立一个顺序表,输入表的长度,再输入表中的元素voidSqLset(Seqlist*L){“/输入表的长度,再输入表中的元素wintiL->last=-l;oprintf(〃请输入表长:”);scanf&i);…if(i>0){。aprintf(〃请输入表中元素:\n〃);&»for(L->last=1;L—>1ast<=i;L->last++)♦scanf(〃%d”,&L->r[L->1ast]);}(3)定义ShellSort。函数对顺序表L按增量序列di[0]—di[n-l]进行希尔排序«Seq1ist*SheUSort(Seqlist*L,intdi[],intn){nti,j;for(i=0;i<=n-l;i++){—She11Insert(L,di[i]);“oprintf(〃第%d趟希尔排序,增量为%丁排序之后的结果\n〃,i+l,di[i]);for(intj=1;j<L->last;j++)printf("%2d〃,L->r[j]);printf(〃\n〃);^returnL;(4)定义ShelHnsert()函数对顺序表L做一趟希尔插入排序voidShe1llnsert(Seqlist*LJntdeIta){。inti,j,k;for(i=l;i<=de1ta;i++){。for(j=i4-de1ta;j<L->last;j=j+deIta){。L->r[O]=L->r[j];ok=j-delta;©owhile(L->r[O]<L->r[k]&&k>0){。。L->r[k+delta]=L—>r[k];。。。。k=k-de1ta;}。。L->r[k+delta]=L->r[O];。}。})(5)在主函数中调用函数完毕操作ointmain()Seqlist*L;ointb[3]={4,2,1};。L=(Seqlist*)ma1loc(sizeof(Seq1ist));。SqLset(L);L=She1ISort(L,b,3);oprintf(〃最终希尔排序之后的结果\n");for(inti=l;i<L->last;i++)aprintf("%2d〃,L->r[i]);return0;4、调试分析编译无错误5、用户使用说明程序名为class2.exe,在DEBUG文献夹里面。运营环境¥isua1c++6.0。6、测试结果请输入表长请输入表长:8请输入走中元素:请输入表长:8请输入走中元素:4952659735第请输入表长:8请输入走中元素:4952659735第1趟希尔排序,35132750第2趟希尔排序.27133550第3趟希尔排序.13273549132750增量为4,4952

增量为2・4952增量为1,5052最终希尔排序之后的结果132735495052排序之后的结果6597排序之后的结果6597排序之后的结果65976597Pressanykeytocontinue7、附录inelude"ma1loc.h"inelude"stdio.h"definemaxlen50//定义顺序表typedefstruct{。。。。//定义顺序表。intr[maxlen];int1ast;}Seq1ist;voidSqLset(Seq1ist*L){。。。〃输入表的长度,再输入表中的元素。inti;。L->last=-l;叩rintf("请输入表长:");scanf(n%d,&i);if(i>0){。叩i*intf("请输入表中元素:\n”);。for(L—>last=l;L—>last<=i;L—>last++)ooscanf("%d",&L->r[L->last]);})voidS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论