实验5 查找算法顺序法.docx
- 文档编号:4301123
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:8
- 大小:466.52KB
实验5 查找算法顺序法.docx
《实验5 查找算法顺序法.docx》由会员分享,可在线阅读,更多相关《实验5 查找算法顺序法.docx(8页珍藏版)》请在冰豆网上搜索。
实验5查找算法顺序法
实验5查找算法实现实验
本实验为验证和操作实验,需要4学时。
1.实验目的
1)学生在实习中体会各种查找算法的基本思想、适用场合,理解开发高效算法的可能性和寻找、构造高效算法的方法。
2)掌握运用查找解决一些实际应用问题。
2.实验内容
用C++描述并实现主要查找算法及其主要操作,其逻辑结构
参阅教科书P271/中文版P224。
实现要求如下:
1)实现顺序查找算法,(参考程序如下)
#include
usingnamespacestd;
typedefintKeyType;//关键字的类型
constintMAXSIZE=100;//数组的容量
//-------------------------------------------------------------
structElemType//学生的记录信息的结构体
{
KeyTypekey;//学号
charname[10];//姓名
intenglish;//成绩
intmath;//成绩
};
//-------------------------------------------------------------
classList
{
public:
ElemType*ht;//表数组
intlength;//表大小(长度)
KeyTypep;//除留余数法的大质数
public:
List(intn1,intp1);
~List(){
delete[]ht;
length=0;
};
intfind(KeyTypek);
intsearch(KeyTypek);
voidcreat_hash();
voidPrintOut();
};
//-------------------------------------------------------------
List:
:
List(intn1,intp1)
{
intnum=0;
intp;
length=n1;
p=p1;
ht=newElemType[length];
for(inti=0;i ht[i].key=-1; } //------------------------------------------------------------- voidList: : creat_hash() { inti,K,en,ma,num; i=0; charna[10]; cout<<"\n请逐一输入各个学号(关键字值)(-1结束): "; cin>>K; while(K! =-1&&i { cout<<"\n请输入学生的姓名,英语成绩和高数成绩: "; cin>>na>>en>>ma; ht[i].key=K; strcpy(ht[i].name,na);//用串拷贝赋值 ht[i].english=en; ht[i].math=ma;// 插入学生记录K cout<<"\n插入成功! "; i++; num++; cout<<"\n请逐一输入各个学号(关键字值)(-1结束): "; cin>>K; } } //------------------------------------------------------------- //查询某关键字的记录 intList: : search(KeyTypek) { ht[length].key=k;//设置监视哨 inti=0; for(i;ht[i].key! =k;i++) {} if(ht[i].key i=-1; returni; } //------------------------------------------------------------- voidList: : PrintOut() { inti; for(i=0;i { if(ht[i].key! =-1) cout<<"\ni="< "< "< <<"英语成绩: "< "< } } //------------------------------------------------------------- intmain() { intp0,n0; cout<<"\n请输入n值(n值应是记录总数的1.3-1.5倍)"; cin>>n0; cout<<"\n请输入P值(应是不大于n的大质数): "; cin>>p0; Listha(n0,p0); ElemTypea; intk; do{ cout<<"\n1.建立哈希表"; cout<<"\n2.在哈希表中查找某位学生"; cout<<"\n3.输出哈希表"; cout<<"\n4.结束"; cout<<"\n=============================="; cout<<"\n输入您的选择(1,2,3,4): "; cin>>k; switch(k) { case1: { ha.creat_hash();}break; case2: { cout<<"\n请输入待查找的学生学号: "; cin>>a.key; inti=ha.search(a.key); if(i==-1) cout<<"\n此学生"< "; else { cout<<"\ni="< "< "< cout<<"英语成绩: "< "< } }break; case3: { ha.PrintOut(); }break; } }while(k>=1&&k<4); cout<<"\n再见! "; cout<<"\n按任意键,返回。 "; return0; } 三、实验结果: 1.建立哈希表: 2.在哈希表中查找某位学生: 3.输出哈希表: 4.结束: 五、总结 (软件设计与实现过程种的经验与体会,进一步的改进设想,可再加入哪些部分? 哪些部分可删除? 哪些部分可合并? 哪些可降低复杂度? 怎样设计能提高其可复用性? 多思考,多总结,才能不断提高程序设计能力。 ) 查找是对数据进行处理时常用操作,是各种数据结构中最常用的算法之一。 不论在线性表中还是在树或图中都会涉及查找问题。 例如: 在一个电话通信表中,查找某个员工的电话;在计算机的某个操作系统环境下,查找某个文件;在互联网上,通过搜索引擎查找所需要的某类信息。 这些都是典型的查找问题。 查找算法的优劣对系统运行效率的影响极大。 静态查找表是指在查找过程中其结构始终不发生变化的查找表,静态查找表主要采用顺序存储结构,算法的时间复杂度为O(n)。 2012年12月12日星期三
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验5 查找算法顺序法 实验 查找 算法 顺序