查询与排序实验报告_第1页
查询与排序实验报告_第2页
查询与排序实验报告_第3页
查询与排序实验报告_第4页
查询与排序实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、学院专业 班 学号 姓名协作者师评定实验题目查询与排序综合实验评分表指导教师评分标准序 号评分项目评分标准满分打分1完成度按要求独立完成实验准备、程序调试、实验报告撰写。202实验内容(1)完成功能需求分析、存储结构设计;(2)程序功能完善、可正常运行;(3)测试数据正确,分析正确,结论正确。303实验报告内容齐全,符合要求,文理通顺,排版美观。404总结对实验过程遇到的问题能初步独立分析,解决后能总结问题 原因及解决方法,有心得体会。10实验报告实验目的与要求1、掌握散列表的构造及实现散列查找;2、掌握堆排序的算法;3、综合比较各类排序算法的性能。二、实验内容#include#include

2、#include#include#define MAX 20typedef structunsigned long key;int result;char name30;RNode;RNode tMAX,rMAX;int h(unsigned long k) /* 散列函数 */return (k-00)%11);void insert(RNode t,RNode x) /* 插入函数,以线性探查方法解决冲突 */ int i,j=0;i=h; while(j0) j+;if(j=MAX) printf(fulln ); i=(i+j)%MAX;if(ti .key=0)ti =x;elsei

3、f (ti . key=printf(记录已存在!n);int search(RNode t,unsigned long k) /* 插入函数,以线性探查方法解决冲突 */ int i,j=0;i=h(k);while(jMAX)&(t(i+j)%MAX.key!=k)&(t(i+j)%MAX.key!=0)j+;i=(i+j)%MAX;if(ti .key=k)return (i);if(j=MAX)return MAX;elsereturn (-i);void sift(RNode r,int v,int w)int i,j;RNode a;i=v;a=ri;j =2* i+1;while

4、 (j=w) if(jrj+1.result) j+;if rj .result)ri =rj;i =j;j=2*j+1;else break;ri =a;void sort(RNode r,int n)int i;RNode y;for (i=n/ 2-1;i=0;i -)sift(r,i,n -1);for(i=n-1;i0;i-)y=r0;r0 =ri;ri =y;prin tf(学生姓名:st学生学号:ut学生成绩: %dn,,ri.key,ri.result);sift(r,0,i-1);printf(学生姓名:st学生学号:%ut学生成绩:dn,rO.name,rO.

5、key,rO.result);int menu() /* 菜单函数 */ int select;printf( nn );printf( n );printf( tt*查找排序实验*n);*n);printf( tt*menu:printf( tt*1.查找printf( tt*2.排序printf( tt*0.退出printf( tt*nprintf( tt*n );printf(IItt*欢迎进入系统*printf( n ); printf( ttt 请输入0-2n );printf( n );printf( 请选择您所要的操作 (选择 (0)退出 ):);*n ); *n ); *n )

6、; *n ););scanf(%d,&select);getchar(); return (select);void main()/* 主函数 */int i,s,n,select;int j=0,m=0;RNode y;for (i=0;iMAX;i+)ti .key=0; /* 初始化 */for (i=0;i10;i+) /* 导入记录*/ switch(i)case0:RNode x; =310900* ; strcpy, * ); =90;insert(t,x); break;case1:RNode x; =31090* 1;strcpy, * ); =95;insert(t,x);

7、break; case2:RNode x;=3109005* ; strcpy, * ); =92;insert(t,x);break; case3:RNode x; =31090* ;strcpy, * ); =93; insert(t,x); break; case4:RNode x;=3109005* ; strcpy, * ); =94;insert(t,x);break; case5:RNode x; =310900* ; strcpy, * ); =91;insert(t,x);break; case6:RNode x;=3109005* ; strcpy, * ); =96;in

8、sert(t,x);break; case7:RNode x; =310900* ; strcpy, * ); =99;insert(t,x); break;case8: RNode x; =310900* ; strcpy, * ); =98; insert(t,x); break; case9: RNode x; =310900* ; strcpy,* ); =97; insert(t,x); break; printf( nnnnnnn );system(cls ); loop: printf( nnn );select=menu(); switch(select) case1:prin

9、tf( n 请输入要查找的学生学号: ); scanf(%u,&;s=search(t,;if (s=MAX| s0) printf( not findn ); else printf( nn 你要查找的学生信息 n);printf(学生姓名:st学生学号:u,,ts.key); break; case2: for(i=0;iMAX;i+) if(ti.key!=0) rj+=ti; m+; printf(排序之前:nn);for ( i=0 ; im ; i +) prin tf(学生姓名:st学生学号:%ut学生成 绩: %dn,,ri.key,ri.resul

10、t);printf(n 排序之后: n);sort(r,m); break;caseO:exit(O);getchar();goto loop;三、实验结果和数据处理(1)查找数据(310900* )(2)排序四、总结这次的课程实验完成了主控界面,录入,输出,排序,查找,结束界面等功能。在 程序调试过程之中,我还是个初学者,在编写程序的过程中不断出现不同状况的错误, 在修改中不断发现自己的问题和不足。通过编译调试,程序提示错误所在,然后我们根 据提示再进行修改。从这个过程之中,使我多多思考问题,不断摸索,尽量自己发现错 误所在并加以改正,以便在下次不再犯同类型的错误。也就是说在调试的过程中,不断 的学习,不断的改进,提高自身 C语言学习能力和算法设计能力。五、问题与讨论1、分析你所构造散列表的查找成功的平均查找长度012345678910333435363738394041321111111111查找成

温馨提示

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

评论

0/150

提交评论