2023年数据结构实验报告查找最高分与次高分.pdf
《2023年数据结构实验报告查找最高分与次高分.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告查找最高分与次高分.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、核据秸相与程序强制实险实验报告课程名称数据结构与程序设计实验课程编号090 6 5 50实验项目名称查找最高分与次高分学号年级姓名专业计算机科学与技术学生所在学院计算机学院指导教师杨静实验室名称地点21B276哈尔滨工程大学 实验报告六实验课名称:数据结构与程序设计实验实验名称:查找最高分与次高分班级:学号:姓名:时 间:2 0 23.05.05一、问题描述有5 1 2人参与玩某游戏,从 尸5 1 2给每个人分派一个编号,每个人的游戏得分 在0999之间,现要用不同方法查找出游戏参与者的最高分和次高分。规定:a.自行产生51 2个的随机整数作为所有游戏参与者的得分。b.输出所有游戏参与者(用编
2、号表达)及其得分。c.用顺序查找方法查找出其中取得最高分和次高分者及其分数,并输出。d.锦标赛法查找出其中取得最高分和次高分者及其分数,并输出。e.通过无序序列建堆和堆调整得到取得最高分者和次高分者及其分数,并输出。f.比较不同方法的查找效率和各自的特点。二、数据结构设计1,使用结构体People存储序号和得分,表达个体t y ped e f stru c t i nt num;int score;Pe o p 1 e;2,设立M I N表 达Pe。pie数据类型的最小值,用于竞标赛查找#def i ne I N_MAX(int)(u n s i g n ed)(in t)0)1)#de f
3、i ne IN_MIN(-|N _ M A X-l)cons t P e ople MIN=5 1 3,I N_MIN);3.使用结构体Pe o p 1 e s作为顺序表,存储每个个体t y pe d e f s tructPeopl e base;int leng t h;P e o pies;三、算法设计1 .顺序查找int search(Pe o pies*p)P e ople big g e r=p-b as e 1;P e op I e big g est=p-base 1 ;int n;f or(n=1 ;n b asen.s c o re bi g gest.s c or e)b
4、ig g er=b i g ge s t;b i gg e st=pba s e n;e 1 se i f(p-ba s en.s c ore b igge r.score)b i gger=p-b ase n;if(p-b a s e n.num!=b igge s t.num&p-b a s e n.sco r e=big g es t.score)p r intf(第d人和第d人的分数同样大 n”,p-basen.num,b igge s t.num);)P r intf(第 1 人的的分数最大:%dn,big g est.num,b ig g es t.sco r e);P r i n
5、 t f(*第=n)/x为叶子节点p-base 冈=MIN;return;e 1 se i f(r=n)/x有左子树,无右子树p-basex=p-b a s e L 1 ;r e t u rn;)if(p-base I,n um=p-b a s e x.n u m)Ad j us t(p,I,n);e 1 seAdjust(p,r,n);)p-basex=max(p-basel,p-b a s e r);)(b).初始树并依次查找最大值与最大值vo i d Game S or t(Peoples*a,i n t n)i nt i,Ie n;P eo p les*b;b=(Peoples*)ma
6、 1 1 o c(siz e of(P eopl e s);len=1;w h ile(len n)len bas e=(People*)malloc(si z e o f(P e o p 1 e)*len);b-l e ngth=1 e n;fo r(i=len/2;i b asei=(i-1 en/2 b a se i-len/2):(M I N);)for(i=len/2-1 ;i=l;i)/在双亲存放左右最大值b-basei=ma x(bbas e 2*i,b-bas e 2*i+1 1);for(i=1;iba s e i=b-bas e 1;A d j u s t(b,1,len)
7、;)p r in t f(第%d 人的的分数最大:%dn,a-basel.num,a-b a sel.score);p r i n tf(第(1 人的的分数次大:%d n,a b as e 2.n um,a-base2.s core);f r ee(b);3.通过无序序列建堆和堆调整得到取得最高分者和次高分者及其分数(a).筛 选:除 P bas e s外均满足堆定义,调整pb a ses,将 p-b a ses,m建立为大顶堆i n t He a pA d j ust(P e ople s*p,i n t s,int m)P eople rc=p-bases;in t j;for(j=2*s
8、;j=m;j*=2)i f(jbasej.s c o r e basej+1 .s c o r e)+j;j 指向较大的孩子节点)i f(!(r c.sc o re base j .scor e)b r eak;)p-base s =p-b as e j;s=j;p-b ases=r c;re t urn 0;)(b).对 p base1.512建堆,进行堆调整取得最高分和次高分者,并输出i n t HeapSort(People s*p)int i;for(i=(p-le n gt h)/2;i0;一 i)从最后一个非叶子节点开始,建立大顶堆H e apA d j u s t(p,i,p 1
9、 ength);)for(i=p-l e ngth;i510;-i)只将最大和次大的得分互换到末尾s wap(p-bas e 1,p-ba s e i);He a pAdj u s t(p,1,i-1);pri n tf(第d 人的的分数最大:%d n,p-b ase512.n um,p-base 5 12.score);p r i nt f(第%d 人的的分数次大:%dn,p-bas e 511.num,p-b a se 511.sco r e);return 0;)四、运营测试与分析L 开始运营后,自 行 产 生 5 1 2 个的随机整数作为所有游戏参与者的得分,并输出所有游戏参与者(用编
10、号表达)及其得分。7228422116969085441日否否否否否否否否否否否否得否皆否否否否否否否正数皴数数数数数数数数数数数数数数数数数数数数数数匕二ts二14.二二14.二Is二二.rv二&-1s二LJIIs二tsI-ISI-二L-A,11Is二14.二L-JLFIIH二&-人人人人人人人人人人人人人人人人人人人人人人人人ITTTJlTytTTtxlTTT第第第第第第第第第第第第第第第第第第第第第第第第一7 17114295716644145288?1851524550115117977121日得否否否否否否否否否否否否否否否否否否否否得否正数数数数数数数数数数数数数数数数数数数数皴第
11、第第第第第第第第第第第第第第第第第第第第第第第4、V.ZX4、V4、vLh、V4、V4、vr*4、V4VA、V4、V4、vLh、V4、V、V卜、vLhV卜、.Vts二LJ二g二-JD1-L-L3II乙,二L-L-141.1lsk、vhV卜、:vLh、.卜、卜,vMh、,v、.4lvlh、vMh、,卜,vlh、.V卜、v卜、卜、,VIs二s二L-Is二h.二L-Is二h.11s二6V二th.二ts二L-Is二141.1141.1Is二h.二s二J,二h.1Ys二人人人人人人人人人人人人人人人人人人人人人人4680246888999944414444第第第第第第第第第第第第第第第第第第816546
12、011395842176163493947186171827r=_否否否否否否否否否否否否否否否否否否否否否7E一数数数数数数数数数数数数一数数数数jTT-0,/*FT-TT-f*TT-JTT-JTT*d-fEI-n-TT-/*TT-TT-JTTl&Q-XA.ATT777944AAAx5.O9Q44一第第第第第第第第第第第第第第第第第第第士3.输出顺序查找,锦标赛查找,堆排序查找的结果大大亵数数 契4A序4424顿第第-h v h v勺一/n r一赛1/4/一听、4 4*4 2O R第8 59 99 90裳8 59 99 9 最大:998244人的的分数茯大:995五、实验收获与思考通过本次实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 数据结构 实验 报告 查找 最高分 高分
限制150内