- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教案封皮开课单位信息工程学院课程名称数据结构授课教师
教 案 封 皮
开课单位 信息工程学院 课程名称 数据结构 授课教师 郭晓利 授课对象 计机、软件12合 选用教材 数据结构 总学时 2 课次 24 第七章 第 节 教学目的
及要求 理解查找的基本概念
掌握顺序查找、折半查找、分块查找的查找方法 教学重点
顺序查找、折半查找、分块查找的查找方法 教学难点
顺序查找、折半查找、分块查找的查找方法 教学方式、方法 理论教学、多媒体授课 教
学
过
程
及
时
间
分
配 第一学时(45分钟)
复习(3分)
基本概念(42分)
顺序查找
第二学时(45分钟)
折半查找 (40分)
分块查找
课后小结(5分)
教 案
内 容 备 注 复习:
1、图的基本术语?
7.1基本概念
列表:由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。
关键字:数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。如果一个关键字可以唯一标识列表中的一个数据元素,则称其为主关键字,否则为次关键字。当数据元素仅有一个数据项时,数据元素的值就是关键字。
查找:根据给定的关键字值,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。
静态查找
在查找过程中,查找表本身的结构不发生变化,只确定是否存在数据元素的关键字值与给定的关键值相等或找出此数据元素的属性,这样的查找称为静态查找(static search)。
动态查找
在查找过程中,查找表本身的结构将发生变化,包括插入元素(查找不成功时,在查找表中插入关键字为给定值的记录)或删除元素(查找成功时,将查找表中关键字为给定值的记录删除,这样的查找称为动态查找(dynamic search))。
平均查找长度:为确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。对于长度为n的列表,查找成功时的平均查找长度为:
ASL=P1C1+P2C2+…+PnCn=
7.2 静态查找
7.2.1顺序查找
下面给出顺序结构有关数据类型的定义:
#define LIST_SIZE 20
typedef struct
{
KeyType key;
OtherType other_data;
}RecordType;
typedef struct
{
RecordType r[LIST_SIZE+1]; /*r[0]为工作单元*/
int length;
}RecordList;
基于顺序结构的算法如下:
【算法7.1设置监视哨的顺序查找法】
int SeqSeareh(RecordList l,KeyType k)
/*在顺序表l中顺序查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置,否则为0*/
{
l.r[0].key=k;i=l.length;
while(l.r[i].key!=k)i--;
return i;
}
其中l.r[0]称为监视哨,可以起到防止越界的作用。不用监视哨的算法如下:
【算法7.2不设置监视哨的顺序查找法】
int SeqSearch(RecordList l,KeyType k)
/*不用监视哨法,在顺序表中查找关键字等于k的元素*/
{
i=l.length;
while(i=1l.r[i].key!=k)i--;
if(i=1)
return i;
else
return 0;
}
其中,循环条件i=1判断查找是否越界。利用监视哨可省去这个条件,从而提高查找效率。
下面用平均查找长度来分析一下顺序查找算法的性能。假设列表长度为n,那么查找第i个数据元素时需进行n-i+1次比较,即Ci=n-i+1。又假设查找每个数据元素的概率相等,即Pi=1/n,则顺序查找算法的平均查找长度为:
ASL==
7.2.2折半查找
折半查找的算法如下:
int BinSrch(SqList l,KeyType k)
/*在有序表l中折半查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置*/
{
low=1;high=l.length;/*置区间初值*/
while(low=high)
{ mid=(low+high)/2;
if(k==l.r[mid].key) return(mid); /*找到待查元素*/
文档评论(0)