当前课程知识点:数据结构(下) > 第九章 词典 > (b)散列:原理 > 09B-1 从服务到电话
同学们好 从今天开始我们进入到新的一章 词典
我们将学习实现词典adt的重要技术 也就是散列
我们将看到散列实际上并不是一种简单的技术
从某种意义上讲 它甚至是一种思想
是的 散列是一种赖以高效组织数据
并实现相关算法的重要思想
接下来我们就会看到 在这种思想背后的原理
是多么的直观和简单
我们的故事要从服务电话说起
当你需要获得某个公司或者部门的服务
你应该如何通过电话来找到他们呢
查电话簿 没错这是一种司空见惯的方法
不过如果你手头没有电话簿 或者电话簿太厚
以至于你没有足够的耐心去查阅
有当如何呢
作为一个公司 应该明白
有相当多的客户都是因为这种纠结而流失掉的
因此反过来一家优秀的公司
应该为它的服务取一个更加便于记忆的电话号码
对此 你有什么建议?
你或许会说 那不妨就取8个8 或者8个6
或者12345678
这些解决方案尽管也勉强可行
但是如果从突出公司和服务个性的角度来看
这类方法都是不够的
下面我们不妨来看
更有经验的公司是如何巧妙的解决这个问题的
比如你如果需要致电ibm公司
就它的服务或产品进行咨询 那么你就可以拨打这个电话
没错 就是这个电话 或者这个电话
没错 就是这个和这个电话
如果你是第一次在这些公司的首页上看到这类电话
你或许会有所质疑 因为它并不像你直观理解的那样
给出了一个完全由数字组成的电话号码
但是我想你很快就会习惯并且喜欢这种方式
并且由此对这类公司留下深刻而友好的印象
实际上你只要掏出你的电话
留意一下键盘
或许在此之前 对于每一个键你只留意了其中的阿拉伯数字
而实际上呢 当下大部分的键盘都是这种形式
其中的每个键上 除了有一个阿拉伯数字
同时还拥有若干个英文字母
我们可以理解为 这样的一个键既可能对应于一个数字
也可能同时对应于若干个字母
也就是说 由数字和字母混搭构成的电话号码也是可行的
比如这里的ibm 4you对应的拨号过程就是ibm 4you
请留意体会这种方式的巧妙之处
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试