存在表中的键索引搜索

时间:2012-05-18 20:24:10

标签: c

我怀疑我的一本书的陈述。

谈论符号表中的键索引搜索,在某一点它说:“如果没有记录(但只有键),我们可以使用位表。在这种情况下,符号table被称为存在表,因为我们可以将第k位视为指示表中是否存在k键还是表中没有k键。例如,在32位计算机上使用313字表,我们可以使用此方法快速确定是否已分配给定的4位内部电话号码。

嗯,我知道一个单词是什么,因此在这种情况下,存在表应该是一个10.016位的表。但是这是什么意思? 4位数电话号码的这个事实与它有什么关系?那么,当记录对应于键时,如何使用键索引搜索实现符号表?

2 个答案:

答案 0 :(得分:2)

您可以使用10000位的比特表(每个位对应一个电话号码),它符合313个字节(10000/32 = 312.5~ = 313)

答案 1 :(得分:2)

有9000个四位数字(基数为10,十进制)和10000(非负数),最多有四位数,因此超过10,000位的表足以指示这些数字是否存在(是否设置了n位?)。对于五位数字 - 其中90,000个 - 你需要一个更大的桌子。

由于位表只能告诉你“是的,我们有它”或“不,我们没有”,如果您需要任何超过该信息的信息,则不能使用它。但是如果这就是你需要知道的全部内容,那么将索引到表(数组)中的键的任何内射映射都可以访问紧凑存储的信息。对于电话号码,映射是微不足道的。