当前位置: 首页 > 知识库问答 >
问题:

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

傅自明
2023-03-14

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

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

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

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

另一种方法是将阵列加倍,并在适当的位置进行重新灰化。这种方式可能会导致更长的运行时间,因为重新灰化可能会导致与新散列的插槽和旧插槽发生冲突。

我应该用哪种方式?

共有1个答案

狄宾实
2023-03-14

第二种解决方案只会在调整大小的过程中节省空间,如果实际上有空间在适当的位置扩展现有的哈希表-我认为对于大型哈希表来说,这种情况的可能性非常小,所以我会选择第一种解决方案。

 类似资料:
  • 我试图解决这个问题,我需要实现线性探测。 给定一个整数数组和一个哈希表大小。使用线性探测将数组元素填充到哈希表中以处理冲突。 例1: 例2: 您的任务: 您不需要读取输入或打印任何内容。 您的任务是完成函数linearProbing(),该函数将空哈希表(hash)、哈希表大小(hashSize)、整数数组arr[]及其大小N作为输入,并将数组arr[]的所有元素插入给定的哈希表中。 哈希表的空单

  • 通常,列表可以实现为链表(遍历速度较慢),也可以实现为数组列表(插入元素时速度较慢)。 我想知道是否有可能使用处理器的MMU来更有效地实现列表,只要插入或删除一个元素,就可以重新映射而不是复制内存。这意味着数组中任何地方的索引和插入/删除速度都要达到O(1),比任何其他列表实现都要好。 我的问题是: 程序是否真的能够控制自己的虚拟内存,或者是否需要对操作系统进行更改 每个进程的页表条目数是否有限制

  • 问题内容: 当用户结束调整浏览器窗口大小时,jQuery或JavaScript有什么办法触发函数? 换句话说: 用户调整浏览器窗口大小时是否可以检测到鼠标向上移动事件?除此以外: 我可以检测到窗口调整大小操作何时完成吗? 我目前只能在用户开始使用jQuery调整窗口大小时触发事件 问题答案: 您可以使用每次实际改变宽度/高度时获取,如下所示: 它会使用新的高度/宽度值并在页面中对其进行更新以供您查

  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 问题内容: 调整浏览器窗口大小时,有什么方法可以调整jqGrid的大小?我已经尝试过这里描述的方法,但是该技术在IE7中不起作用。 问题答案: 作为后续措施: 由于不可靠,本文中显示的先前代码最终被放弃了。我现在按照jqGrid文档的建议使用以下API函数调整网格大小: 为了进行实际的大小调整,将实现以下逻辑的函数绑定到窗口的resize事件: 使用其父级的clientWidth和(如果不可用)o

  • 本文向大家介绍jquery实现拖拽调整Div大小,包括了jquery实现拖拽调整Div大小的使用技巧和注意事项,需要的朋友参考一下 今天写了一天这个jquery插件: 可以实现对div进行拖拽来调整大小的功能。  记录一下今天的劳动成果,可能会有很多不成熟的地方,欢迎大家来指正,谢谢! 以上就是本文的全部内容了,希望大家能够喜欢。