问题标签 [linear-probing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python MyHashTable 类:线性探测的搜索方法
我需要帮助实现我的“MyHashTable”类的方法:
该方法应该使用线性探测来处理冲突解决。如果 search_key 在哈希表中,则该方法返回包含该 search_key 的槽的槽号。如果 search_key 不在哈希表中,该方法返回 -1
我的课看起来像这样:
任何帮助或教程链接都会很棒。谢谢
algorithm - 使用线性探测实现 Hashtable 时调整大小权衡
我正在尝试使用线性探测来实现哈希表。
在将(键,值)对插入哈希表之前,我想检查它是否是半满的。如果是,我需要将底层数组的大小加倍。
显然,有两种方法可以做到这一点:
一种是创建另一个大小加倍的数组,重新散列旧数组中的所有条目并将它们添加到新数组中。然后,将旧数组重新绑定到新数组。这种方式很容易实现,但占用大量空间。
另一种是将数组加倍并就地进行重新散列。似乎这种方式可能会导致更长的运行时间,因为重新散列可能会导致与新散列的插槽和旧插槽发生冲突。
我应该使用哪种方式?
data-structures - 封闭哈希表的线性冲突空间不足
所以我有一个 8 桶哈希表,h(i) = i mod 8
其中插入了这些数字:
我刚开始学习哈希表,所以我对这些概念很困惑。
如果我有一个开放的哈希表,结果将是:
现在,如果我必须使用封闭哈希并实现线性冲突处理,我会
我这样做对吗?
python - 在 Python 字典中, ( (j*5)+1 ) % 2**i 如何循环遍历所有 2**i
我正在研究 python 如何实现字典。python字典实现中的一个等式与使用等式对空字典槽的伪随机探测有关
这是解释here。
我读过这个问题,Python 的内置字典是如何实现的?,并且基本了解字典是如何实现的。
我不明白的是为什么/如何等式:
循环遍历 的所有剩余部分 2**i
。例如,如果i = 3
总起始大小为 8. j
经历循环:
如果起始大小是 16,它将经历循环:
这对于探测字典中的所有插槽非常有用。 但为什么它会起作用? 为什么会 j = ((j*5)+1)
起作用但不起作用j = ((j*6)+1)
或j = ((j*3)+1)
两者都卡在较小的周期中。
我希望能更直观地理解这一点,而不是等式有效,这就是他们使用它的原因。
java - Java:线性探测删除方法
我应该通过线性探测来实现我自己的哈希表,但是我在使用 remove 函数时遇到了问题。它无法正常工作,但我无法查明问题:
我的调试器将此显示为输出,因此很明显我的方法存在表格中的空白问题:
提前感谢您的帮助!
c++ - 在 C++ 中为泛型类型实现线性探测
我想在 C++ 中实现 hashtabe 的线性探测,但是键值对将是通用类型,例如:vector< pair< key,value>>(其中键值是通用类型)。
现在,在线性探测中,如果一个单元格被占用,我们遍历向量直到找到一个空单元格,然后将新的对放入该单元格中。
问题是,在泛型类型中,我如何能够检查特定单元格是否被占用?我不能使用这些条件:
或者
那么,如何检查向量中的特定单元格是否为空?如果我误解了这个概念,请纠正我。
java - 碰撞解决线性探测 Java
因此,我试图检测我的线性方法中的冲突,该方法正在散列我的哈希映射 studentMap 的键。我有线性探测的基本功能,但是我正在努力检测一个键是否已经存在(因此 + 1)。到目前为止,此代码不起作用 - 它不会检查我的地图 studentMap 中的键是否存在。非常感谢任何帮助!我已经删除了一些其他的哈希方法来减少这段代码的大小,因为它们是不相关的。
c - 线性探测不适用于碰撞
我正在根据 reg no 制作一个哈希表。插入功能工作正常,但在发生冲突时搜索和删除不起作用。它根本没有做任何事情。也没有任何编译错误。任何帮助,将不胜感激。
c++ - 在哈希表中将存储桶标记为已删除
我一直很难找到一个体面的解释。我正在使用 C++ 编写一个线性探测哈希表,但我遇到了remove()
操作问题。我正在散列一个字典集合strings
,我想知道如何将索引i
删除设置为已删除,以便search()
andinsert()
正常工作。任何帮助/伪代码都会很棒,谢谢。我现在最好的猜测是调用某种结构对象deleted
并将其放置在那里。
go - 使用线性探测解决冲突后如何从哈希表中检索值?
我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我试图取回值时,我得到不同的值,因为我使用线性探测来修复冲突。
这是我的程序: https: //play.golang.org/p/7Pmqu6A313