散列表的删除 删除查找键值为K的记录方式相同。 找到桶号为h(K)的桶且从中搜索查找键为K的记录,继而将找到的记录删除。 可以将记录在块中移动,删除记录后,可选择合并同一链上的存储块 动态散列表 可扩展散列表 在简单的静态散列表结构上主要增加了: 1) 为桶引入了一个间接层,即用一个指向块的指针数组来表示桶,而不是用数据块本身组成的数组来表示桶。 2) 指针数组能增长,它的长度总是2的幂,因而数组每增长一次,桶的数目就翻倍。 3) 并非每个桶都有一个数据块;如果某些桶中的所有记录都可以放在一个块中,那么,这些桶可能共享一个块。 4) 散列函数h为每个键计算出一个K位二进制序列,该K值足够大,比如3 2。但是,无论何时桶的数目都使用从序列第一位开始的若干位,此位数小于K,比如说是i位。也就是说,当i是使用的位数时,桶数组将有2i个项。 右图中每个存储块的“小凸块”中都出现了数字1。这个数字表明由散列函数得到的位序列中有多少位用于确定记录在该块中的成员资格。 在本例中,只用一个二进制位来确定所有的块和记录 随着散列表的增长,不同块中需要考虑的位数可能不同。 桶数组的大小由当前正在使用的最大二进制位数来决定,但有些块可能使用较少的位数。 可扩展散列表的插入 计算出h(K),取出这一二进制位序列的前i位,并找到桶数组中序号为这个i位的项。(注意,i作为散列数据结构的一部分保存) 根据数据组中该项的指针找到某个存储块B。 如果B中还有存放新记录的空间,把新记录存入,插入完成。 如果B中没有空间,那么视数字i的不同有两种可能,数字i表明散列值中有多少位于确定存储块B的成员资格 1) 如果ji,( j的值可在图中每个存储块的“小凸块“中找到) (a) 将块B分裂成两个存储块。 (b) 根据记录散列值的第( j+ 1)位,将B中的记录分配到这两个存储块中,该位为0的记录保留在B中,而该位为1的记录则放入到新块中。 (c) 把(j+ 1)存入这两个存储块的小凸块中,以标明用于确定成员资格的二进制位数。 (d) 调整桶数组中的指针,使原来指向块B的项指向块B或新块,这由项的第(j+ 1)位决定。 注意,分裂块B可能解决不了问题,因为有可能块B中所有记录将分配到由B分裂成的两个存储块的其中一个中去。如果这样,我们需要对仍然太满的块用下一个更大的j值重复上述过程。 2) 如果j=i,那么我们必须先将i加1。我们使桶数组长度翻了一倍,因此数组中现在有2i+ 1。 假定w是以前的桶数组中作为某项序号的i位二进制位序列。在新桶数组中,序号为w0和w1(即分别用0和1扩展w所得到的数)的项都指向原w项指向的块。最后,我们继续像第一种情况中那样分裂B。由于i现在大于j,所以满足第一种情况。 插入1010 因为第一位是1,所以该记录属于第二个块。然而,该块已满,因此需要分裂。这时j=i= 1,需要将桶数组加位 注意,以0开头的两个项都指向存放键值散列序列以0开头的记录的那个存储块,且该存储块的“小凸块”中数字仍然为1,这表明该块的成员资格只由位序列的第一位确定。 位序列以1开头的记录存储块需要分裂,因此把这一块中的记录分到以1 0开头和11开头的两个存储块中。在这两个存储块中的小凸中有一个2,表示成员资格用位序列的前两位来确定。两个新块都至少有一个记录,不用进行递归分裂。 插入键值分别为0 0 0 0和0 111的记录 这两个记录都属于第一个存储块,于是该块溢出。因为该块中只用一位来确定其成员资格,而i= 2,所以不用调整桶数组,只需分裂该块,让0 0 0 0和0 0 0 1留在该块,而将0 111存放到新块中,桶数组中由0 1项改为指向新块。所有记录没有全分配到一个块中,所以不必递归地分裂。 假若现在要插入一个键值为1 0 0 0的记录。对应1 0的块溢出。由于它已经使用两位来确定其成员资格,这时需要再次分裂桶数组,并且把i设为3。 注意,图中对应1 0的块被分裂成1 0 0的块和1 0 1的块,而其他块仍只使用两位来确定成员资格。 可扩展散列表优点: 当查找一个记录时,总是只需要查找一个数据块。还需要查找到一个桶数组的项,但如果桶数组小到可以存放在主存中,那么访问桶数组就不需要进行磁盘I / O。 可扩展散列表缺点: 1) 当桶数组需要翻倍时,要做大量的工作(当i很大时)。 2) 当桶数翻倍后,它在主存中可能就装不下了,磁盘I / O开始大增,并且出现明显的性能下降。 3) 如果每块的记录数很少,那么很有可能某一块的分裂比在逻辑上讲需要分裂的时间提前许多。块可存放两个记录,即使记录的总数远小于22 0,这也有可能出现三个记录的前2 0位二进制位序列。 线性散列,桶的增长较为缓慢。 桶数n的选择总是使存储块的平均记录数保持与存储块所能容纳的记录总数成一个
您可能关注的文档
- 数据库图书信息管理数据库SQL语句要领.doc
- 傲发3G-FAX数码传真机企业型使用指南详解.ppt
- 数据库完整性要领.pdf
- 数据库网格计算2要领.ppt
- 数据库物理设计要领.doc
- 八年级物理电和磁复习 王.ppt
- 第二章商品的品名、质量数量和包装.ppt
- 八年级物理下册第第九章电及磁的复习课件人教版.ppt
- 数据库系统SQL实验要领.doc
- 数据库系统安全、技术操作规程要领.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 《专业工程管理与实务》.pdf VIP
- 中国血栓性疾病防治指南(2025版).docx VIP
- 施工质量日志-.xls VIP
- 2025年国家公务员全国总工会面试题及答案.docx VIP
- 合肥市普通高中六校联盟2025-2026学年高三第一次语文教学质量监测+答案.docx VIP
- 局部晚期食管癌患者新辅助免疫治疗与常规新辅助治疗的比较:系统评价和meta分析.pdf
- 2025以骑手为代表的新就业群体研究报告:职业技能与跑单时长对收入的共同作用.pdf VIP
- 年产一亿片别嘌呤醇的车间工艺设计.doc VIP
- 商务型(带电梯、地下室、效果图)三层别墅设计图.pdf VIP
- 2026年详版个人信用报告征信报告最新Word可编辑模版样板doc文件.docx
原创力文档

文档评论(0)