实验5 查找算法顺序法.docx

上传人:b****6 文档编号:4301123 上传时间:2022-11-29 格式:DOCX 页数:8 大小:466.52KB
下载 相关 举报
实验5 查找算法顺序法.docx_第1页
第1页 / 共8页
实验5 查找算法顺序法.docx_第2页
第2页 / 共8页
实验5 查找算法顺序法.docx_第3页
第3页 / 共8页
实验5 查找算法顺序法.docx_第4页
第4页 / 共8页
实验5 查找算法顺序法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

实验5 查找算法顺序法.docx

《实验5 查找算法顺序法.docx》由会员分享,可在线阅读,更多相关《实验5 查找算法顺序法.docx(8页珍藏版)》请在冰豆网上搜索。

实验5 查找算法顺序法.docx

实验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日星期三

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1