当前课程知识点:数据结构(下) > 第九章 词典 > (d2)散列:排解冲突(2) > 09D2-1 平方试探
在上一节 我们已经介绍了排解散列冲突的基本方法
大抵说来 无非封闭定址和开放定址两类大的层
相对而言 后者的物理结构更为紧凑
因此 在性能上略具优势
对于大规模的数据 更是如此
然而我们也看到 对于其中典型的线性试探策略而言
往往存在大量本不该发生的冲突
如何就此作出改进 正是接下来这一节的主题
实际上 线性试探的问题根源在于
大部分的试探的位置都集中于某一个相对很小的局部
因此 解决这个问题的钥匙也就是
适当的拉开各次试探的间距
而所谓的平方试探就是这一思路的具体体现
所谓平方试探 顾名思义也就是
每次试探的位置 不是简单的以线性递增
而是以平方数为间距
也就说 如有必要继续试探
那么第一个位置的间距应该是1的平方
如果仍有必要 第二个位置间距应该是2的平方
以至3的平方 4的平方 诸如此类
整个试探的过程 也可以通过这幅图来示意
不妨假设 首先散列映射到的是编号为0的这个位置
如果不能在此命中
我们接下来将要试探的将是与之间距为1的平方
也就是紧邻的这个桶单元
当然就这一步而言 与线性试探没有区别
然而接下来的情况就大不相同了
如果我们在一号位置仍未命中
接下来第二次试探的位置
其间距将是2的平方也就是4
以下类推 第三次试探如果有必要
其对应的间距应该是3的平方9
以及第四次 4的平方16
当然 所有的试探位置 都是相对于M取模之后的
如此可以保证所有的试探位置
都在这个封闭的散列空间之内
那么这种排解冲突的方法
的确优于此前的线性试探策略吗
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试