知识大全 查找 - 散列技术 - 处理冲突的方法(一)

Posted 地址

篇首语:归志宁无五亩园,读书本意在元元。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 查找 - 散列技术 - 处理冲突的方法(一)相关的知识,希望对你有一定的参考价值。

  处理冲突的方法

  通常有两类方法处理冲突 开放定址(Open Addressing)法和拉链(Chaining)法 前者是将所有结点均存放在散列表T[ m

   ]中;后者通常是将互为同义词的结点链成一个单链表 而将此链表的头指针放在散列表T[ m ]中

   开放定址法

  ( )开放地址法解决冲突的方法

  用开放定址法解决冲突的做法是 当冲突发生时 使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列 沿此序列逐

  个单元地查找 直到找到给定的关键字 或者碰到一个开放的地址(即该地址单元为空)为止(若要插入 在探查到开放的地址 则可

  将待插入的新结点存人该地址单元) 查找时探查到开放的地址则表明表中无待查的关键字 即查找失败

  注意

  ①用开放定址法建立散列表时 建表前须将表中所有单元(更严格地说 是指单元中存储的关键字)置空

  ②空单元的表示与具体的应用相关

  【例】关键字均为非负数时 可用 来表示空单元 而关键字为字符串时 空单元应是空串

  总之 应该用一个不会出现的关键字来表示空单元

  ( )开放地址法的一般形式

  开放定址法的一般形式为 h i =(h(key)+d i )%m ≤i≤m

  其中

  ①h(key)为散列函数 d i 为增量序列 m为表长

  ②h(key)是初始的探查位置 后续的探查位置依次是h l h … h m 即h(key) h l h … h m 形成了一

  个探查序列

  ③若令开放地址一般形式的i从 开始 并令d = 则h =h(key) 则有

  h i =(h(key)+d i )%m ≤i≤m

  探查序列可简记为h i ( ≤i≤m )

  ( )开放地址法堆装填因子的要求

  开放定址法要求散列表的装填因子α≤l 实用中取α为 到 之间的某个值为宜

  ( )形成探测序列的方法

  按照形成探查序列的方法不同 可将开放定址法区分为线性探查法 二次探查法 双重散列法等

  ①线性探查法(Linear Probing)

  该方法的基本思想是

  将散列表T[ m ]看成是一个循环向量 若初始探查的地址为d(即h(key)=d) 则最长的探查序列为

  d d+l d+ … m … d

  即:探查时从地址d开始 首先探查T[d] 然后依次探查T[d+ ] … 直到T[m ] 此后又循环到T[ ] T[ ] … 直到探查到

  T[d ]为止

  探查过程终止于三种情况

  ( )若当前探查的单元为空 则表示查找失败(若是插入则将key写入其中);

  ( )若当前探查的单元中含有key 则查找成功 但对于插入意味着失败;

  ( )若探查到T[d ]时仍未发现空单元也未找到key 则无论是查找还是插入均意味着失败(此时表满)

  利用开放地址法的一般形式 线性探查法的探查序列为

cha138/Article/program/sjjg/201311/23680

相关参考

知识大全 数据结构考研分类复习真题 第九章 集合[49]

  设给定关键字输入序列为()用散列法散列的地址区间要求设计一合理的散列函数;冲突时用链表法解决写出散列算法并构造出散列表在等概率查找情况下查找成功的平均查找长度是多少?【东北大学 四(分)

知识大全 查找 - 散列技术 - 散列函数的构造方法

  散列函数的构造方法  散列函数的选择有两条标准简单和均匀  简单指散列函数的计算简单快速;  均匀指对于关键字集合中的任一关键字散列函数能以等概率将其映射到表空间的任何一个位置上也就是说散列函数能

知识大全 查找 - 散列技术 - 散列表的概念

  散列方法不同于顺序查找二分查找二叉排序树及B树上的查找它不以关键字的比较为基本操作采用直接寻址技术在理想情况下无须任何比较就可以找到待查关键字查找的期望时间为O()  散列表的概念  散列表  设

知识大全 第五部分 查找[5]

   (五)散列(Hash)表    定义    哈希函数类似于数学中定义的函数每个值都能通过哈希函数算出对应值的  哈希表根据设定的哈希函数和处理冲突的方法将一组关键字

知识大全 第五部分 查找[6]

   二次探测法  当发生冲突时寻找下一个散列地址的公式为  Hi=(H(key)+di)%m  (di=--…q-q且q≤m/)    随机探测法  当发生冲突时下一个

知识大全 查找 - 散列技术 - 散列表上的运算

  散列表上的运算  散列表上的运算有查找插入和删除其中主要是查找这是因为散列表的目的主要是用于快速查找且插入和删除均要用到查  找操作  散列表类型说明  #defineNIL//空结点标记依赖于关

知识大全 第9章查找(二)习题练习

设散列表长度为散列函数h(x)=x%给定的关键字序列为试画出分别用拉链法和线性探查法解决冲突时所构造的散列表并求出在等概率情况下这两种方法查找成功和失败时的平均查找长度请问装填因子的值是什么?&nbs

知识大全 第9章查找(二)习题练习答案

设散列表长度为散列函数h(x)=x%给定的关键字序列为试画出分别用拉链法和线性探查法解决冲突时所构造的散列表并求出在等概率情况下这两种方法查找成功和失败时的平均查找长度请问装填因子的值是什么?&nbs

知识大全 文件 - 散列文件

  散列文件的组织方式  散列文件是利用散列存储方式组织的文件亦称直接存取文件即根据文件中关键字的特点设计一个散列函数和处理冲突的方  法将记录散列到存储设备上  散列表与散列文件比较  >  基桶和

知识大全 数据结构考研分类复习真题 第九章 集合[24]

  对下面的关键字集若查找表的装填因子为采用线性探测再散列方法解决冲突做  ()设计哈希函数; ()画出哈希表;  ()计算查找成功和查找失败的平均查找长度;()写出将哈希表中某个数据元素删