《数据结构》(C语言)第九查找.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 查找 前提:以顺序表或线性链表表示静态查找表。 顺序查找的查找过程: 从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,否则查找不成功。 查找过程:先确定待查记录所在的范围,然后逐步缩小范围直到找到或找不到该记录为止。 适用条件:采用顺序存储结构的有序表。 查找过程: 算法评价: 3. 二叉排序树的插入算法 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 二、平衡二叉树 构造:对关键字进行分析,取关键字的若干位或其组合作哈希地址。 适于关键字位数比哈希地址位数大,且能预先估计出全体关键字的每一位上各种数字出现的频度。 构造:取关键字被某个不大于哈希表表长m的数p除后所得余数作哈希地址,即 H(key)=key MOD p,p?m p 应为不大于 m 的质数或是不含 20 以下的质因子。 构造若干个哈希函数,当发生冲突时,计算下一个哈希地址,即: Hi = RHi(key) i=1,2,……k 其中:RHi为不同的哈希函数。 特点:不易产生“聚集”,但计算时间增加。 第九章 作业 9.9 9.19 补充作业: 在顺序表(2,5,7,10,14,15,18,23,35,41,52)中, (1)用顺序查找关键字为23的记录需做 次关键码比较 ,用折半查找需做 次关键码比较? (2)用顺序查找关键字为12的记录需做 次关键码比较 ,用折半查找需做 次关键码比较 ? 9.9 已知如下所示长度为12的表 (Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec) (1)试按表中元素的的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的ASL。 (2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的ASL。 (3)按表中元素顺序构造一棵平衡二叉树,并求其在等概率的情况先查找成功的ASL。 9.19 选取哈希函数H(k)=(3k) MOD 11。用开放定址法处理冲突, di = i ((7k) MOD 10 +1)(i=1,2,3,…)。试在0~10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)构造哈希表,并求等概率情况下查找成功时的平均查找长度。 哈希表也可以用来构造静态查找表。并且,对静态查找表,有时可以找到不发生冲突的哈希函数。即,此时的哈希表的 ASL=0, 称此类哈希函数为理想(perfect)的哈希函数。 1) 哈希函数是一个映象,即: 将关键字的集合映射到某个地址集合上, 它的设置很灵活,只要这个地址集合的 大小不超出允许范围即可; 从这个例子可见: 2) 由于哈希函数是一个压缩映象,因此,在一般情况下,很容易产生“冲突”现象,即: key1? key2,而 f(key1) = f(key2)。 Key1和 key2互称为同义词。 3) 很难找到一个不产生冲突的哈希函数。 一般情况下,只能选择恰当的哈希函数,使冲突尽可能少地产生。 因此,在构造这种特殊的“查找表” 时,除了需要选择一个“好”(尽可能少产生冲突)的哈希函数之外;还需要找到一种“处理冲突” 的方法。 哈希表的定义: 根据设定的哈希函数 H(key) 和所选中的处理冲突的方法,将一组关键字映象到一个有限的、地址连续的地址集 (区间) 上,并以关键字在地址集中的“像”作为相应记录在表中的存储位置,如此构造所得的查找表称之为“哈希表”。 9.3.2 构造哈希函数的方法 对数字的关键字可有下列构造方法: 若是非数字关键字,则需先对其进行 数字化处理。 1. 直接定址法 3. 平方取中法 5. 除留余数法 4. 折叠法 6. 随机数法 2. 数字分析法 1. 直接定址法 构造:取关键字或关键字的某个线性函数作哈希地址,即 H(key)=key 或 H(key)=a·key+b 特点: 地址集合与关键字集合大小相等,不会发生冲突。 实际中能用这种哈希函数的情况很少。 2. 数字分析法 ???????? 8 1 3 4 6 5 3 2 8 1 3 7 2 2 4 2 8 1 3 8 7 4 2 2 8 1 3 0 1 3 6 7 8 1 3 2 2 8 1 7 8 1 3 3 8 9 6 7 8 1 3 6 8 5 3 7 8

文档评论(0)

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

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

1亿VIP精品文档

相关文档