Use the first i high order bits of X as a displacement偏转/位移 into bucket address table, and follow跟随 the pointer to appropriate bucket
桶地址表中指向桶j的表项编号(的计算公式)为: 2(i-ij)
如何插入记录:To insert a record with search-key value Kj
follow same procedure as look-up and locate the bucket, say j. (桶j)
If there is room in the bucket j, insert record in the bucket.
Else the bucket must be split and insertion re-attempted 重试 (will see in next slide)
Overflow buckets used instead in some cases (will see in next slide)
散列函数h为每个键计算出一个K位二进制序列,该K足够大,比如32。但是,桶的数目总是使用从序列第一位或最后一位算起的若干位,此位数小于K,比如说是i位。也就是说,当i是使用的位数时,桶数组将有2i个项。
假定K=4,即散列函数h只产生4位二进制序列。当前使用的只有其中一位,正如桶数组上方的框中i=1所标明的那样。因此,桶数组只有两个项,一个对应0,一个对应1。
我们在前面图表中插入一个键值散列为1010序列的记录。因为第一位是1,所以该记录属于第二个块。然而,该块已满,因此需要分裂。这时我们发现j=i=1,因此我们首先需要将桶数组加倍,如图所示。图中我们已将i设为2。
我们插入键值分别列为0000和0111的记录。这两个记录都属于图中第一个存储块,于是该块溢出。因为该块中只用一位来确定其成员资格。
而i=2,所以我们就不用调整桶数组。我们只需分裂该块,让0000和0001留在该块,而将0111存放到新块中,桶数组中01项改为指向新块。
插入一个键值为1000的记录
1、简述稀疏索引和稠密索引的优缺点及应用场景? 稀疏矩阵占用的空间小,速度慢,精确率相对于稠密索引低,插入、删除记录代价较大。常应用于搜索引擎搜索记录的数据库。 稠密索引占用的空间大,速度快,方便插入删除。常应用于订单数据库,精准,快速。 2、散列索引和顺序索引的区别是什么? 顺序索引:基于搜索码值的顺序排序 散列索引:采用散列函数将搜索码映射到散列桶,通过散列索引,支持基于搜索码的记录快速查找