知识大全 查找 - 散列技术 - 散列表的概念
Posted 冲突
篇首语:业无高卑志当坚,男儿有求安得闲?本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 查找 - 散列技术 - 散列表的概念相关的知识,希望对你有一定的参考价值。
散列方法不同于顺序查找 二分查找 二叉排序树及B 树上的查找 它不以关键字的比较为基本操作 采用直接寻址技术 在理想情况下 无须任何比较就可以找到待查关键字 查找的期望时间为O( )
散列表的概念
散列表
设所有可能出现的关键字集合记为U(简称全集) 实际发生(即实际存储)的关键字集合记为K(|K|比|U|小得多)
散列方法是使用函数h将U映射到表T[ m ]的下标上(m=O(|U|)) 这样以U中关键字为自变量 以h为函数的运算结果就是相
应结点的存储地址 从而达到在O( )时间内就可完成查找
其中
① h U→ … m 通常称h为散列函数(Hash Function) 散列函数h的作用是压缩待处理的下标范围 使待处理
的|U|个值减少到m个值 从而降低空间开销
② T为散列表(Hash Table)
③ h(K i )(K i ∈U)是关键字为K i 结点存储地址(亦称散列值或散列地址)
④ 将结点按其关键字的散列地址存储到散列表中的过程称为散列(Hashing)
>
散列表的冲突现象
( )冲突
两个不同的关键字 由于散列函数值相同 因而被映射到同一表位置上 该现象称为冲突(Collision)或碰撞 发生冲突的两个
关键字称为该散列函数的同义词(Synonym)
【例】上图中的k ≠k 但h(k )=h(k ) 故k 和K 所在的结点的存储地址相同
( )安全避免冲突的条件
最理想的解决冲突的方法是安全避免冲突 要做到这一点必须满足两个条件
①其一是|U|≤m
②其二是选择合适的散列函数
这只适用于|U|较小 且关键字均事先已知的情况 此时经过精心设计散列函数h有可能完全避免冲突
( )冲突不可能完全避免
通常情况下 h是一个压缩映像 虽然|K|≤m 但|U|>m 故无论怎样设计h 也不可能完全避免冲突 因此 只能在设计h时尽可
能使冲突最少 同时还需要确定解决冲突的方法 使发生冲突的同义词能够存储到表中
( )影响冲突的因素
冲突的频繁程度除了与h相关外 还与表的填满程度相关
设m和n分别表示表长和表中填人的结点数 则将α=n/m定义为散列表的装填因子(Load Factor) α越大 表越满 冲突的机会
也越大 通常取α≤
cha138/Article/program/sjjg/201311/23740相关参考
利用线性探测法构造散列表 【例】已知一组关键字为()用除余法构造散列函数用线性探查法解决冲突构 造这组关键字的散列表 解答:为了减少冲突通常令装填因子α 数为:h(key)=key%13。
查找 在给定的数据集合中查找某个关键值就是查找查找的基本方法主要有顺序查找法折半查找法B树散列(Hash)表及其查找考的比较多的是折半查找和散列表我们要掌握它们的基本概念和方法例如散列表的碰撞如
处理冲突的方法 通常有两类方法处理冲突开放定址(OpenAddressing)法和拉链(Chaining)法前者是将所有结点均存放在散列表T[m ]中;后者通常是将互为同义词的结点链成一个单链
散列函数的构造方法 散列函数的选择有两条标准简单和均匀 简单指散列函数的计算简单快速; 均匀指对于关键字集合中的任一关键字散列函数能以等概率将其映射到表空间的任何一个位置上也就是说散列函数能
设给定关键字输入序列为()用散列法散列的地址区间要求设计一合理的散列函数;冲突时用链表法解决写出散列算法并构造出散列表在等概率查找情况下查找成功的平均查找长度是多少?【东北大学 四(分)
设散列表长度为散列函数h(x)=x%给定的关键字序列为试画出分别用拉链法和线性探查法解决冲突时所构造的散列表并求出在等概率情况下这两种方法查找成功和失败时的平均查找长度请问装填因子的值是什么?&nbs
设散列表长度为散列函数h(x)=x%给定的关键字序列为试画出分别用拉链法和线性探查法解决冲突时所构造的散列表并求出在等概率情况下这两种方法查找成功和失败时的平均查找长度请问装填因子的值是什么?&nbs
设散列函数为H(K)=KMOD解决冲突的方法为链接法试将下列关键字集合依次插入到散列表中(画出散列表的示意图)并计算平均查找长度ASL【首都经贸大学三(分)】 已知散列表的地址空间为A[]散列函
本章介绍了线性表树和散列表的查找方法算法实现以及各种查找方法的时间性能分析重点是顺序查找二分查找二叉树查找以及散列表上查找的基本思想和算法实现 一基本概念(识记) 查找的同时对表做修改操作(如
散列文件的组织方式 散列文件是利用散列存储方式组织的文件亦称直接存取文件即根据文件中关键字的特点设计一个散列函数和处理冲突的方 法将记录散列到存储设备上 散列表与散列文件比较 > 基桶和