C中的紧凑型阵列

时间:2012-11-09 16:02:37

标签: c arrays

假设我有这些节点对(ID):

  • 0 1
  • 0 8
  • 500 4
  • 8 300

我知道唯一节点的数量:6。 如何在不分配500x500矩阵的情况下将它们保存到矩阵中? 可以使用哪种映射?

提前致谢!

2 个答案:

答案 0 :(得分:4)

您可能想要的是稀疏矩阵 - 您可以将其想象为一个数组,其中包含对应于x,y的值,用于索引矩阵和存储在那里的值,因此大多数为0的矩阵可以存储在少量的空间。此数据结构的内存开销为O(n),其中n是矩阵中非零项的数量。

实际上,您可以使用除实际数组之外的其他内容来获得性能优势,因为在数组中搜索x,y代价很高,特别是如果它不存在(最常见的情况)。

一种选择是使用快速哈希映射类型结构通过散列x,y位置来存储值以生成密钥...

更多信息:http://en.wikipedia.org/wiki/Sparse_matrix

答案 1 :(得分:1)

这称为稀疏矩阵,您可以使用许多表示。您想要哪一个取决于您需要快速完成的操作。

查看维基百科sparse matrix文章了解详情。