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

如何在Java中查找哈希表中的中值?[闭门]

弘烨烁
2023-03-14

想改进这个问题吗 通过编辑这篇文章,更新问题,使其只关注一个问题。

我有哈希表

如何高效地找到这个哈希表中的值(整数)的中位数?


共有2个答案

东门文斌
2023-03-14

您可以使用The Apache Commons数学库

您可能需要的所有数学工具都有完整的API,例如中位数、平均值、均方差等...

希望这有帮助。

韦业
2023-03-14

哈希表中没有有意义的排序:哈希表的全部意义是根据键值将值均匀地分散在桶中。找到给出密钥的元素非常快,接近常数时间(即O(1)),但是基于不等式的算法,比如找到所有元素e使得密钥(e)

您可以在一个数组中加载所有键(并且只加载键),然后使用(O(N))算法来查找对应于中值的键。一旦有了median键,就可以用它从哈希表中检索median元素。

请注意,O(N)显然是找到无序集中值的最佳方法。如果您需要经常找到集合的中值,则可以使用有序表示法,例如基于平衡树的表示法。红黑树通常用于实现这种有序映射。关键查找将是O(log(N)),这比O(1)慢,但仍然非常快,但集合已经排序,查找中值很容易,通常作为内置操作提供。

我所知道的快速中位数查找算法是基于快速排序中使用的相同旋转策略。这是我刚刚发现的另一个:

http://www.cs.cornell.edu/courses/cs2110/2009su/Lectures/examples/MedianFinding.pdf

 类似资料:
  • 问题内容: 用Java创建哈希表(或关联数组…)的最直接方法是什么?我的google-fu提供了几个示例,但是有标准的方法吗? 有没有一种方法可以用键-值对的列表填充表,而无需为每个对分别在对象上调用add方法? 问题答案: 这两个类都可以从java.util包中找到。下面的jGuru FAQ条目 解释了两者之间的区别。

  • 我知道如何在哈希表中找到相应键的值,但我如何找到哪个键附加到特定值?我写了一个函数,它循环遍历String并查找关键字。它做的很快,但我需要返回该值的关键字找到。这是我目前为止的方法

  • 问题内容: 我编写了以下程序来计算Java中字符串的SHA-256哈希值: 好吧,那很好。在下一步中,我想以一种接受文件并计算其哈希值的方式来开发它。我的解决方案是在字符串数组中读取整个文件,然后在该字符串数组上调用方法。但是有两个问题: 我不知道如何将整个文件读入数组?目前,我认为我必须逐行阅读并在数组中添加新行! 上面的方法需要大文件存储空间! 这是我当前的程序来读取文件: 似乎没有一种方法可

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加

  • 我使用react-router进行路由,并使用hashHistory选项,这样我就可以从浏览器刷新页面,或者指定现有路由的url,然后登陆到正确的页面。它工作得很好,但我在url中看到的哈希如下所示:http://localhost/#/login?_k=ya6z6i 这是我的路由配置:

  • 问题内容: 我有bean“ MyBean”,它具有属性HashMap-“ map”,其值类型为MyClass。我想使用ui:repeat在jsf中显示map的一些属性。但是这些代码: 但是这段代码没有显示任何内容。虽然当我尝试以这种方式在jsp中显示hashmap值时,它已成功完成。我哪里错了?以及如何解决? 问题答案: 从文档中获取value属性: 此标签进行迭代的项目集合的名称。集合可以是,数