数据结构chapter_8.pptVIP

  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文档。上传文档
查看更多
第8章 查找 8.1 静态查找表 二、有序表的查找(折半查找) 二、二叉排序树的插入与删除 8.3 哈希表(散列表和查找) 2、数字分析法 和二叉查找树类似,哈希表作为动态查找表的一种组织方法,建表的过程也是从空表起,逐个插入记录的过程。左侧为在开放定址的哈希表中插入记录的算法。 有时也可能因为哈希函数不够好,以至当表中记录数较多时冲突次数大大增加,可在插入算法中设立一个冲突次数的上限,一旦冲突次数超过该上限,可重新构建哈希表。 1)在哈希函数相同的情况下,处理冲突的方法不同,所得哈希表的平均查找长度也不同。 2)线性探测再散列处理冲突容易造成记录的“二次聚集”,即使得本不是同义词的关键字又产生新的冲突; 3)对开放定址处理冲突的哈希表而言,表长必须≥记录数,并且由于表中已填入的记录越多,继续插入记录发生冲突的可能性就越大,因此可以设想这样的哈希表不应该使表长=记录数。而链地址处理冲突的哈希表不会出现这种情况,它的平均查找长度主要取决于哈希函数本身。 四、哈希表的查找与分析 讨论: md5散列算法——信息-摘要算法(1991年) 例2: md5用于BBS登录时的身份认证 哈希函数:假设函数是“均匀的” 在一般情况下,处理冲突方法相同的哈希表,其平均查找长度依赖于哈希表的装填因子。 例如用两种不同的处理冲突方法的平均查找长度: 处理冲突的方法:对于同样一组关键字,设定相同的哈希函数,则不同的处理冲突的方法得到的哈希表不同,它们的平均查找长度不同: (1)用线性探测再散列处理冲突 ASL=(1*6+2+3*3+4+9)/12=2.5 用链地址法处理冲突 ASL=(1*6+2*4+3+4)/12=1.75 线性探测再散列的哈希表查找成功时的平均长度为: 哈希表的装填因子定义为: α标志哈希表的装满程度。直观地看,α 越小,发生冲突的可能性就越小;反之,α越大,表中已填入的记录越多,再填记录时,发生冲突的可能性就越大,则查找时,给定值需要于之进行比较的关键字的个数也就越多。 随机探测再散列,二次探测再散列和再哈希表查找成功时的平均查找长度: 链地址法处理冲突的哈希查找成功时的平均查找长度: 不同的处理冲突方法构成的哈希表查找不成功时的平均查找长度分别为: 线性探测再散列 随机探测再散列 链地址法处理冲突 2、哈希查找分析 2)“冲突”是不是特别讨厌? 答:不一定!正因为有冲突,使得文件加密后无法破译!(单向散列函数不可逆,常用于数字签名和间接加密)。 利用了哈希表性质:源文件稍稍改动,会导致哈希表变动很大。 1) 散列存储的查找效率到底是多少? 答:ASL与装填因子?有关!既不是严格的O(1),也不是O(n) 应尽量选择一个合适的?,以降低ASL的长度 典型应用:md5散列算法 Hash函数与数字签名(数字手印) HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。 在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。 SHA-1和MD5都是目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提供了数字认证的可能性。 md5的典型应用是对一段信息(message)产生一个128位的信息摘要(message-digest),以防止被篡改。 md5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位(链接变量参数 )分组组成,将这四个32位分组级联后将生成一个128位散列值。 例1:在unix系统下,有很多软件在下载的时候都有一个文件名相 同、文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: md5 (file) = 0ca175b9c0f726a831d895e269332461   这就是file文件的数字签名。 message-digest algorithm)——用于加解密和数字签名 4 2 6 5 8 9 4 2 6 8 9 5 向左旋转一次 继续插入关键字 9 二叉树的平衡处理调整的规律可归纳为下列四种情况 1 B 2 A BL h AR h-1 BR h-1 插入结点 0 A 0 B BL BR AR LL (1)单向右旋平衡处理 由于在结点*a的左子树根结点的左子树上插入结点,*a的平衡因子由1增加到2,致使以*a为根结点的子树失去平衡,则需要进行一次向右的顺时针旋转操作,如图所示。 中序遍历:BL B BR A AR (2)单向左旋平衡处理 -1 B -2 A

文档评论(0)

qbjzmxj5904 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档