当前课程知识点:数据结构(下) > 第九章 词典 > (b)散列:原理 > 09B-2 循值访问
这种巧妙体现在两个方面
其一 通过这样一种形象生动而友好的方式
不仅可以使得你便捷的记住这个电话号码
同时更重要的是 你能记住它是这家公司的电话号码
另一方面 只要你能够辨识26个英文字母
你就可以通过这种方式来进行拨号
而你的每一次拨打 依然对应于一串数字
整个的电话服务系统除了需要引入一种扩充之后的键盘
无需做任何更多的改造
比如 当你按照这样的提示去拨打时
你所拨打的电话号码实际上依然是由数字组成的
实际上在这样一种巧妙的变换技巧背后
是某种深刻的思想
我们不妨就访问数据的方式来做一对比
你应该记得对于不同的数据结构
我们在此之前都根据其如何访问数据 进行过分类
你应该还记得有寻秩访问
call by rank 比如向量
再如 寻位置访问 call by position
这方面的典型例子是列表 list
而以BST为典型代表的这类数据结构呢
都属于寻关键码访问 也就是call by key
反观我们这里对电话号码的访问
如果说我们这里访问的对象是公司的服务
那么刚才这种获取服务的方式 又属于其中的哪种呢
首先这种方式既不是寻秩 也不是寻位置访问
这是因为所有的公司的各项服务之间并不存在某种线性次序
那么它是寻关键码访问吗
这里的确有关键码
也就是每个服务所对应的那个电话号码
然而即便你是按照刚才的方式去拨打某个特定的电话
在整个过程中
在你的脑海里除了那个公司和服务的助记符号之外
完全可以不出现任何形式的数字电话号码
因此 这也不属于寻关键码访问的方式
那么我们刚才实质访问的是什么呢
是的 也就是你所需要找到的那个对象本身
我们称之为value 数值
因此我们不妨将新的这种访问方式称作寻数值访问
call by value
我们刚才已经领略到了这种新的访问方式的威力
是的 若能加以充分利用
这种访问方式将使我们的计算效率进一步得以提高
而这样的一种典型的技巧 就是所谓的Hashing
中文可以根据含义 译作杂凑
也可以根据发音 译作哈希
在这里不妨采用一种折中的译法 也就是散列
那么具体什么是散列呢
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试