计算机数据结构试验报告hrbedu.doc_第1页
计算机数据结构试验报告hrbedu.doc_第2页
计算机数据结构试验报告hrbedu.doc_第3页
计算机数据结构试验报告hrbedu.doc_第4页
计算机数据结构试验报告hrbedu.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实验名称:查询最高分实验类型:综合性实验班级:090611学号:2009061115姓名:贲闯实验日期:2011.6. 241、问题描述有512人参与玩某游戏,从1512给每个人分配一个编号,每个人的游戏得分在0999之间,现要用不同方法查找出游戏参与者的最高分和次高分。要求:l 自行产生512个的随机整数作为所有游戏参与者的得分。l 输出所有游戏参与者(用编号表示)及其得分。l 用顺序查找方法查找出其中取得最高分和次高分者及其分数,并输出。l 锦标赛法查找出其中取得最高分和次高分者及其分数,并输出。l 通过无序序列建堆和堆调整得到取得最高分者和次高分者及其分数,并输出。比较不同方法的查找效率和各自的特点。 2、数据结构设计根据题设,我们可以创建一个数据结构记录数字和编号,再对该数据结构进行初始化,如下:struct edge_t int to; elem_t len;struct heap heap_t hMAXN*MAXN; int n,p,c; void init()n=0; void ins(heap_t e) for (p=+n;p1&_cp(e,hp1);hp=hp1,p=1); hp=e; int del(heap_t& e) if (!n) return 0; for (e=hp=1,c=2;cn&_cp(hc+=(cn-1&_cp(hc+1,hc),hn);hp=hc,p=c,c 1;returnmax(big(l,mid),big(mid+1,r);(2)在主函数中进行随机数的生成,并将生成的随机数储存到之前定义的数组中,如:n = 512;srand(time(NULL);/puts(Number of people :);/scanf(%d,&n);for (int i=1;i=n;i+)ai = rand()%1000;printf(%d %dn,i,ai);(3)然后用顺序查找的方法找出生成随机数中最高分和次高分,如下: int max = -1;int pos = -1;for (int i=1;i max)max = ai;pos = i;int smax = -1;int spos = -1;for (int i=1;i smax & i != pos)smax = ai;spos = i;(4)随后再用竞标赛的方法对随机数进行查找,找出最高分和次高分,如下:heap h;h.init();for (int i=1;i=n;i+)heap_t tmp = ai,i;h.ins(tmp);heap_t tmp = h.h1;h.del(h.h1);5、运行、测试与分析 运行程序,自动生成随机数,并且分别用顺序查找方法和锦标赛查找方法找出最高分和次高分,然后输出结果,如图9.1所示 图9.1 6、实验收获及思考本次试验分别运用了顺序查找和锦标赛查找的方法进行了最大数和次大数的查找,让我对查询算法有了更深一层的理解。知道以后该怎样运用查找方法。7、源码#include #include #include #include using namespace std;int n;int a1000;#define MAXN 200#define inf 1000000000typedef int elem_t;struct edge_t int to; elem_t len;#define _cp(a,b) (a).d(b).d)struct heap_telem_t d;int v;struct heap heap_t hMAXN*MAXN; int n,p,c; void init()n=0; void ins(heap_t e) for (p=+n;p1&_cp(e,hp1);hp=hp1,p=1); hp=e; int del(heap_t& e) if (!n) return 0; for (e=hp=1,c=2;cn&_cp(hc+=(cn-1&_cp(hc+1,hc),hn);hp=hc,p=c,c 1;returnmax(big(l,mid),big(mid+1,r);int main()n = 512;srand(time(NULL);/puts(Number of people :);/scanf(%d,&n);for (int i=1;i=n;i+)ai = rand()%1000;printf(%d %dn,i,ai);puts(-);int max = -1;int pos = -1;for (int i=1;i max)max = ai;pos = i;int smax = -1;int spos = -1;for (int i=1;i smax & i != pos)smax = ai;spos = i;printf(Bigest : %d Position : %d Bigger :%d Position : %dn,max,pos,smax,spos);heap h;h.init();for (int i=1;i=n;i+)heap_t tmp = ai,i;h.ins(tmp);heap_t tmp = h.h1;h.del(h.h1);printf(Bigest : %d Posi

温馨提示

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

评论

0/150

提交评论