寻找节省空间的算法和数据结构

时间:2009-09-03 15:08:31

标签: java algorithm data-structures

最好是Java。我对数据结构(如集合和映射)的实现以及排序等算法感兴趣,这些算法具有内存效率,不一定非常快。如果内存量和分配数量很少,我可以使用O(n ^ 2)获取和存储。那里有什么东西吗?

2 个答案:

答案 0 :(得分:3)

对于与Java标准结构相比非常紧凑的结构,可以在位级工作。当然,这在很大程度上取决于你的数据,我想这些代码实际上并不是通用的。我一无所知,一般都无法做到。您可能必须开发它(可能使用BitSet类)。


Java中的某些东西枚举类非常紧凑:EnumSet和EnumMaps 。它们非常紧凑,速度极快。想法:

  • 识别Set中特定枚举实例的存在与否是布尔信息,因此需要 1位。因此,EnumSet只需要一个Long(对于少于64个实例的枚举)。
  • 在EnumMap中(字符串仅用于示例),不需要存储密钥(枚举),可以通过在传递索引的枚举上调用ordinal()来隐式调用它。因此,存储可以是String [],而不存储密钥

答案 1 :(得分:2)

O(n ^ 2)似乎真的过分了。您对数据结构的期望是什么?简单地使用向量将为您提供存储和检索的O(n)最坏情况以及O(n)空间要求。 - 后者无法真正减少(除非压缩数据结构,但为了工作,您需要提供很多有关您的数据域的更多信息),那么为什么不简单地使用向量? / p>