第9章 查找要点.ppt

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找操作的性能分析 查找算法中的基本操作是“将记录的关键字和给定值进行比较”,因此,通常以“其关键字和给定值进行过比较的记录个数的平均值”作为衡量查找算法好坏的依据。 顺序表查找的优缺点 缺点:ASL较大,特别是n很大时,查找效率低 优点:算法简单且适应面广 查找“成功”和“不成功”都考虑 ASLss=3 /4 (n+1) 9.1.4 索引顺序表的查找 查找步骤分两步进行: P228 算法9.5(a) BiTree SearchBST ( BiTree T, KeyType key ) { //T 为二叉排序树的根指针,查找成功则返回 //指向该结点的指针,否则返回空指针。 if ( ( !T) || EQ( key, T -data. key ) ) return ( T ) ; else if ( LT( key , T -data. key ) ) return (SearchBST ( T - lchild, key )); else return (SearchBST ( T - rchild, key )); } // SearchBST 3.二叉排序树的插入算法 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 二叉查找树为何叫二叉排序树? 根据数据序列构建二叉排序树 对其进行中序遍历 二、平衡二叉树 1. 何谓“平衡二叉树”? 1.什么是平衡二叉树? 1)LL平衡旋转: 3)LR平衡旋转: 冲突现象再举例: 二、哈希函数的构造方法 1、直接定址法 2、除留余数法 4、数字分析法 5、平方取中法 7、随机数法 二次聚集 当表中i,i+1,i+2位置上已填有记录时,下一个哈希地址为i,i+1,i+2和i+3的记录都将填入i+3的位置,这种在处理冲突过程中发生的两个第一个哈希地址不同的记录争夺同一个后继哈希地址的现象称作“二次聚集”。即在处理同义词的冲突过程中又添加了非同义词的冲突,显然,这种现象对查找不利。 讨论: 2、链地址法(拉链法) 3、再哈希法(双哈希函数法) Hash(key)= ? B*( A*key mod 1 ) ? (A、B均为常数,且0A1,B为整数) 特点:以关键字key乘以A,取其小数部分,然后再放大B倍并取整,作为哈希地址。 Hash(key)=key mod p (p是一个整数) 特点:以关键字除以p的余数作为哈希地址。 关键:如何选取合适的p? 技巧:若设计的哈希表长为m,则一般取p≤m且为质数 (也可以是不包含小于20质因子的合数)。 3、乘余取整法 (A*key mod 1) 就是取A*key 的小数部分 例:欲以学号最后两位作为地址,则哈希函数应为: H(k)=100*(0.01*k % 1 ) 其实也可以用法2实现: H(k)=k % 100 特点:由关键字的某几位组合成哈希地址。所选的位应当是:各种符号在该位上出现的频率大致相同。 3 4 7 0 5 2 4 3 4 9 1 4 8 7 3 4 8 2 6 9 6 3 4 8 5 2 7 0 3 4 8 6 3 0 5 3 4 9 8 0 5 8 3 4 7 9 6 7 1 3 4 7 3 9 1 9 例:有一组(例如80个)关键字,其样式如下: 讨论: ① 第1、2位均是“3和4”,第3位也只有“ 7、8、9”,因此,这几位不能用,余下四位分布较均匀,可作为哈希地址选用。 位号:① ② ③ ④ ⑤ ⑥ ⑦ ② 若哈希地址取两位(因元素仅80个),则可取这四位中的任意两位组合成哈希地址,也可以取其中两位与其它两位叠加求和后,取低两位作哈希地址。 特点:对关键字平方后,按哈希表大小,取中间的若干位作为哈希地址。 理由:因为中间几位与数据的每一位都相关。 例:2589的平方值为6702921,可以取中间的029为地址。 6、折叠法 特点:将关键字自左到右分成位数相等的几部分(最后一部分位数可以短些),然后将这几部分叠加求和,并按哈希表表长,取后几位作为哈希地址。 适用于:每一位上各符号出现概率大致相同的情况。 法1:移位法 ── 将各部分的最后一位对齐相加。 法2:间界叠加法──从一端向另一端沿分割界来回折叠后,最后一位对齐相加。 例:元 用法1: 427+518+96=1041 用法2: 427 518 96— 724+518+69 =1311 Hash(key) = random ( key ) (random为伪随机函数) 适用于:关键字长度不

文档评论(0)

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

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

1亿VIP精品文档

相关文档