静态表查找算法原理与实现分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

9查找

查找根据给定的关键字,在查找表中确定一个其关

键字等于给定值的数据元素(记录)的过程

找到:查找成功

找不到:查找失败

查找表由同一类型的数据元素构成的集合。

关键字记录中某一数据项的值。

主关键字能唯一确定一个元素的关键字(如学号、商品号)。

平均查找长度查找一个结点所作的平均比较次数

(衡量一个查找算法优劣的主要)

本章讨论的重点:

查找表的各种表示方法及其相应的查找算法

9.1静态表的查找

静态表

——以顺序结构的表(顺序表)

在表上所作的操作

——查询某个数据元素是否在查找表中;

9.1.1顺序查找

一、算法思想:

从表的一端开始,用给定值k与表中各个结点的

关键字逐个比较。

查找成功——找出相等的值;

查找失败——已到达表的另一端,即表中所有结点

的关键字值都不等于k。

提示:可在此设置一个监视哨,作为下标越界的条件。

二、示例查找成功

返回i(=4)

查找失败

返回0

r[0]:为监视哨。

监视哨的作用:作为越界(即已查完)的检测条件省去在

循环中每次均要判定是否越界,从而节省比较的时间。

三、结构

keyinfo

0typedefstruct{

1k1keytypekey;

2k2………….

3k3}elemtype;

nkn

四、顺序查找算法:

intsearch(elemtyper[],intn,keytypek){

//在n个结点的顺序表r[1]..r[n]中查找关键字k

inti=n;//从表尾开始向前查找

r[0].key=k;//设置监视哨

while(r[i].key!=k)i--;

return(i);

//若r[i].keyk,则返回i(i≠0),否则返回0(未找到)

}

五、算法分析

1查找成功的平均查找长度(在等概率的前提下)

ASL(1+2+……+n)/n(n+1)/2。

2查找失败的平均查找长度n+1。

六、顺序查找的特点:

1算法简单,对线性表的逻辑次序无要求;

2结构可采用顺序或链式结构均可,但其平均

查找长度较大,均为:(n+1)/2。

思考题:

1表有序时,查找成功和失败的平均查找长度

与表无序时是否相同?算法怎么改进?

2次关键的查找(表中有多个关键字值相同时

的查找如何进行)?

3多关键字的查找?

4用单链表为结构,实现时有何考虑?

5顺序查找的适用范围?

9.1.2二分(折半)查找

一、二分查找的先决条件

表中结点按关键字有序,且顺序(一维数组)。

二、二分法思想:取中,比较

1求有序表的中间位置mid

2若r[mid].keyk,查找成功;

若r[mid].keyk,在左子表中继续进行二

分查找;

若r[mid].keyk,则在右子表中继续进

行二分查找。

二分法查找示例

文档评论(0)

158****9376 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档