问题标签 [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.

0 投票
1 回答
7534 浏览

python - Python MyHashTable 类:线性探测的搜索方法

我需要帮助实现我的“MyHashTable”类的方法:

该方法应该使用线性探测来处理冲突解决。如果 search_key 在哈希表中,则该方法返回包含该 search_key 的槽的槽号。如果 search_key 不在哈希表中,该方法返回 -1

我的课看起来像这样:

任何帮助或教程链接都会很棒。谢谢

0 投票
1 回答
89 浏览

algorithm - 使用线性探测实现 Hashtable 时调整大小权衡

我正在尝试使用线性探测来实现哈希表。

在将(键,值)对插入哈希表之前,我想检查它是否是半满的。如果是,我需要将底层数组的大小加倍。

显然,有两种方法可以做到这一点:

一种是创建另一个大小加倍的数组,重新散列旧数组中的所有条目并将它们添加到新数组中。然后,将旧数组重新绑定到新数组。这种方式很容易实现,但占用大量空间。

另一种是将数组加倍并就地进行重新散列。似乎这种方式可能会导致更长的运行时间,因为重新散列可能会导致与新散列的插槽和旧插槽发生冲突。

我应该使用哪种方式?

0 投票
1 回答
314 浏览

data-structures - 封闭哈希表的线性冲突空间不足

所以我有一个 8 桶哈希表,h(i) = i mod 8 其中插入了这些数字:

我刚开始学习哈希表,所以我对这些概念很困惑。

如果我有一个开放的哈希表,结果将是:

现在,如果我必须使用封闭哈希并实现线性冲突处理,我会

我这样做对吗?

0 投票
1 回答
436 浏览

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) 两者都卡在较小的周期中。

我希望能更直观地理解这一点,而不是等式有效,这就是他们使用它的原因

0 投票
0 回答
1208 浏览

java - Java:线性探测删除方法

我应该通过线性探测来实现我自己的哈希表,但是我在使用 remove 函数时遇到了问题。它无法正常工作,但我无法查明问题:

我的调试器将此显示为输出,因此很明显我的方法存在表格中的空白问题:

提前感谢您的帮助!

0 投票
3 回答
591 浏览

c++ - 在 C++ 中为泛型类型实现线性探测

我想在 C++ 中实现 hashtabe 的线性探测,但是键值对将是通用类型,例如:vector< pair< key,value>>(其中键值是通用类型)。

现在,在线性探测中,如果一个单元格被占用,我们遍历向量直到找到一个空单元格,然后将新的对放入该单元格中。

问题是,在泛型类型中,我如何能够检查特定单元格是否被占用?我不能使用这些条件:

或者

那么,如何检查向量中的特定单元格是否为空?如果我误解了这个概念,请纠正我。

0 投票
1 回答
1310 浏览

java - 碰撞解决线性探测 Java

因此,我试图检测我的线性方法中的冲突,该方法正在散列我的哈希映射 studentMap 的键。我有线性探测的基本功能,但是我正在努力检测一个键是否已经存在(因此 + 1)。到目前为止,此代码不起作用 - 它不会检查我的地图 studentMap 中的键是否存在。非常感谢任何帮助!我已经删除了一些其他的哈希方法来减少这段代码的大小,因为它们是不相关的。

0 投票
1 回答
51 浏览

c - 线性探测不适用于碰撞

我正在根据 reg no 制作一个哈希表。插入功能工作正常,但在发生冲突时搜索和删除不起作用。它根本没有做任何事情。也没有任何编译错误。任何帮助,将不胜感激。

0 投票
1 回答
135 浏览

c++ - 在哈希表中将存储桶标记为已删除

我一直很难找到一个体面的解释。我正在使用 C++ 编写一个线性探测哈希表,但我遇到了remove()操作问题。我正在散列一个字典集合strings,我想知道如何将索引i删除设置为已删除,以便search()andinsert()正常工作。任何帮助/伪代码都会很棒,谢谢。我现在最好的猜测是调用某种结构对象deleted并将其放置在那里。

0 投票
1 回答
588 浏览

go - 使用线性探测解决冲突后如何从哈希表中检索值?

我正在尝试在 go 中实现一个哈希程序,我使用线性探测进行了插入和解决冲突。当我试图取回值时,我得到不同的值,因为我使用线性探测来修复冲突。

这是我的程序: https: //play.golang.org/p/7Pmqu6A313