[工学]第8章 查找.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第8章 查找

第八章 查找 1.查找定义 平均查找长度 8.2 顺序表的查找 8.2.1 顺序查找算法及分析 顺序查找 折半查找 折半查找 折半查找 折半查找 折半查找 8.2.3 分块查找算法及分析 分块查找 分块查找 8.3 树表的查找 树表的查找 二叉排序树 二叉排序树的建立 二叉排序树的建立 二叉排序树的建立 3.二叉排序树中结点的删除 二叉排序树中结点的删除 二叉排序树中结点的删除 二叉排序树中结点的删除 二叉排序树中结点的删除 4.二叉排序树的查找 查找分析 查找分析 查找分析 第八章小结 * 本章的“查找”(Searching)及第九章的“排序”(Sorting)是建立在数据结构上的两个重要运算。查找(或检索)是在给定信息集上寻找特定信息元素的过程。据统计,一些计算机、特别是商用计算机,其CPU处理时间约25%~75%花费在查找或排序上。所以对查找和排序问题的处理,有时直接影响到计算机的工作效率。 本章讨论不同数据结构下的查找算法及查找效率分析等问题。 8.1 概 述 待查找的数据单位(或数据元素)称为记录。记录由若干数据项(或属性)组成,如学生记录: 其中“学号”、“姓名”、“性别”、“年龄”等都是记录的数据项。若某个数据项的值能标识一个或一组记录,称其为关键字(key)。若一个key能唯一标识一个记录,称此key为主key。如“学号”的值给定就唯一对应一个学生,不可能多个学生的学号相同,故“学号”在学生记录里可作为主key。若一个key能标识一组记录,称此key为次key。如“年龄”值为20时,可能有若干同学的年龄为20岁,故“年龄”可作次key。下面主要讨论对主key的查找。 …… 年龄 性别 姓名 学号 设记录表L=(R1 R2……Rn),其中Ri(l≤i≤n)为记录,对给定的某个值k,在表L中确定key=k的记录的过程,称为查找。若表L中存在一个记录Ri的key=k,记为Ri.key=k,则查找成功,返回该记录在表L中的序号i(或Ri 的地址),否则(查找失败)返回0(或空地址Null)。 2.查找方法 查找方法很多,有顺序查找、折半查找、分块查找、树表查找及Hash表查找等等。查找算法的优劣将影响到计算机的使用效率,应根据应用场合选择相应的查找算法。 3.平均查找长度 评价一个算法优劣的量度,一是时间复杂度T(n),n为问题的体积,此时为表长;二是空间复杂度D(n);三是算法的结构等其他特性。 对查找算法,主要分析其T(n)。查找过程是key的比较过程,时间主要耗费在各记录的key与给定k值的比较上。比较次数越多,算法效率越差,故用“比较次数”刻画算法的T(n)。另外,显然不能以查找某个记录的时间来作为T(n),一般以“平均查找长度”来衡量T(n)。 平均查找长度ASL(Average Search Length):对给定k,查找表L中记录比较次数的期望值(或平均值),即: 其中,Pi为查找Ri的概率。等概率情况下Pi=1/n;Ci为查找Ri时key的比较次数(或查找次数)。 顺序表(Sequential Table),是将表中记录(R1 R2……Rn)按其序号存储于一维数组空间,如图8.1。其特点是相邻记录的物理位置也是相邻的。 记录Ri的类型描述如下: typedef struct { keytype key; //记录key …… //记录其他项 }Retype; 其中,类型keytype是泛指,即keytype可以是int、float、char或其他的结构类型等等。为讨论问题方便,一般取key为整型。 顺序表类型描述如下: #define maxn 1024; //表最大长度 typedef struct { Retype data[maxn]; //顺序表空间 int len; //当前表长,表空时len=0 }sqlist; 若说明:sqlist r,则(r.data[1],……,r.data[r.len])为记录表(R1……Rn), Ri.key为r.data[i].key, r.data[0]称为监视哨,为算法设计方便所设。 Rn … R2 R1 图8.1 顺序查找(Sequential Search)是最简单的一种查找方法。 算法思路 设给定值为k,在表(R1 R2……Rn)中,从Rn开始,查找key=k的记录。若存在一个记录Ri(l≤i≤n)的key为k,则查找成功,返回记录序号i;否则,查找失败,返回0。 算法描述 int sqse

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档