【问题标题】:Hash/map with quick access to n highest values哈希/映射,可快速访问 n 个最高值
【发布时间】:2015-07-10 18:40:44
【问题描述】:

我有大量包含用符号索引的数字的大哈希。但是,对于这些数据,我还需要能够从每个散列中快速检索 n 个最高值(使用相应的键)(但我也需要通过键保持快速访问)。很快,我知道最坏的情况是 O(logn) 左右,因为散列很长。插入或修改数据的频率远低于检索数据,因此它们可能很慢。

目前,我将数组与每个哈希配对,其中键以正确的顺序存储。此解决方案使用大量内存,但在最坏的情况下这对我来说是可以接受的。

是否有任何更智能的(例如:不那么丑陋或使用更少的内存)数据结构可供使用?请记住,我只存储单个数字(和符号),因此(据我所知)任何引用存储都会大大增加内存使用量。

如果这很重要,我正在使用 ruby​​。

【问题讨论】:

  • 只有一个答案,9 小时后没有 cmets。你一定很失望。我怀疑原因是读者找不到改进你所做工作的方法。如果您可以编辑以提供更多信息,您可能会引发更多答案,但这并不确定,因为您的问题已经过时了。以下是我想知道的一些事情: 1. 应用程序是什么; 2.假设你有一个哈希数组,你如何从数组中选择一个哈希来修改或检索值(续..)
  • (...cont.) 3. 您是否主要使用相当静态的哈希进行查找,或者对哈希进行频繁更改(添加和删除键、更改值等); 4. 如果您想要给定哈希的顶部 n 值的键值对,n 相对于哈希的大小有多大,您是否会检查所有 n 对(按值递减的顺序)。

标签: ruby sorting data-structures hashmap


【解决方案1】:

为与哈希配对的数组使用堆。这会给你 O(log n)

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 2016-09-15
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多