当前课程知识点:数据结构(下) > 第九章 词典 > (c)散列:散列函数 > 09C-A Vorldmort
针对字符串关键码的hashcode转换
最自然的方法莫过于此
具体的 与多项式法一样
这里也将每一个字符事先与某一个数值对应起来
而所有字符所对应数值的总和
也自然就是所对应的hashcode
这种方法与此前所介绍的折叠法类似
但这里的情况却有所不同
以至于这种方法将会导致频繁的冲突
来看这样一个字符串
如果你熟悉Harry Potter的故事
那么对Tom Marvolo Riddle就不会陌生
是的 他是伏地魔的一个化身
而这个名字也是伏地魔的一个化名
你也应该会记得这样一句话
是的这是Tom Marvolo在自认为
已经掌控了Harry Potter的生死时
颇为得意的写出的一句话
而谜底恰好就藏在这两个字符串中
即便你不知道这个故事 现在也不难看出
这两个字符串实际上是由同一组字符构成
只不过排列次序不同而已
如果按照我们直观的想法
将该字符串中的所有字符所对应的整数累积起来
就会得到一个hashcode 196
那么I am Load Voldemort
不难理解尽管次序有所调整 但因为加法满足交换律
所以同样应该得到196
当然 既然这两个串都是由同一组字符构成的
所以hashcode相同也毫不奇怪
然而事实是即便是由不同的一组数字所构成的英文字符串
按照这种映射方法也同样会有很高的概率发生冲突
继续刚才的故事 你应该还记得第七集
是的 在那集中我们终于得知
Harry Potter居然也是Voldemort的化身死亡魂器之一
那么在冥冥之中
Harry Potter是否真的与伏地魔有某种因果联系呢
我们不妨来做一次散列 如果还不是占卜的话
来看这样一句话 哦不对是字符串
既然Tom Marvolo与Voldemort之间的联系是源自其名字的巧合
那么Harry Potter与Voldemort也应该是如此
恩 必须的
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试