当前课程知识点:数据结构(下) > 第九章 词典 > (b)散列:原理 > 09B-5 散列
再次回到清华大学电话簿的那个实例
假设这就是我们所使用的散列表
可以看到散列表的长度 在这里取做90001
这里的取值的确符合我们的设计原理
也就是一方面要在数量级上远远的小于10的8次方
同时相对于我们实际需要存放的记录数
也就是大致25K 表长既能够足够大
同时又在数量级上保持同阶
经过这样的压缩 空间利用率将上升至至少为1/4
再来看散列函数
对于任何一个关键码
该散列函数都将它映射为它相对于表长M的整数模余
也就是说任何一个8位的电话号码
都将经过相对于90001的乘除被映射至相应的余数
我们来看几个具体的实例
你不妨先掏出计算器 以备待会的验算之需
首先来看中间这个电话号码
根据它 在经过对90001的整数取模
就可以得到散列表中的一个桶
而这个桶呢 则正确的指向了机主所对应的词条
下边这个电话号码也是如此
根据它经过对90001的取模 同样可以找到桶单元
而根据这个桶单元 也同样可以找到机主所对应的词条记录
事实上 只要这个电话号码的确属于清华大学
按照这样的一个算法 的确都可以获得相应的机主信息
至此我们已经基本上圆满的实现了这个应用需求
难道不是吗
从每一个电话号码 到对应的机主信息
只需要常数的时间
而空间效率呢 按照刚才的估算也足以令人满意
特别的 对于散列表而言
其空间效率主要取决于N与M的比值
这一比值 也称作装填因子 load factor
通常也简记作λ
是的就目前而言 我们的解决方法的确几乎完美
然而这里的故事依然没有结束
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试