我刚刚开始学习哈希表,到目前为止,我知道你把你想要哈希的对象放到哈希函数中,然后使用它返回的索引来获得你想要的相应对象。但是有些事我不明白:
您使用什么结构来存储对象,以便您可以使用哈希函数返回的代码快速索引它们?我唯一能想到的是使用一个数组,但要处理所有的键,你必须分配一个9999999999999元素大或类似的东西。或者它是否像迭代链表或其他东西一样简单,并将每个元素中的ID与该哈希函数中的键进行比较?如果是这样,那似乎效率低下不是吗?
答案 0 :(得分:2)
通常,您使用数组(或类似向量的数组)。您选择合理的大小(例如,比您期望的项目数量大20%)和一些解决冲突的方法,当/如果两个键产生相同的哈希值(例如,每个位置是链接列表的头部)具有该值的项目。)
答案 1 :(得分:1)
是的,你通常使用数组但是你做了几件事:
您可以使用散列码的剩余部分除以数组大小,将散列码转换为数组索引。
您将数组的大小设为素数,因为这会使第1步更有效(某些哈希算法需要这样才能获得均匀分布)
您想出了一个处理哈希冲突的设计。 @JerryCoffin的回答为您提供了更多细节。
答案 2 :(得分:0)
一般来说它是数组。如果数组大小为N
,则使用返回范围0..(N-1)
中的数字的哈希函数。例如,对哈希函数结果应用模N
。
然后在Wikipedia.