2017-05-27 163 views
-1

这是有关Algorithims /数据结构的一般问题。 没有特定的编程语言。我正在处理布尔值数组。我想要这些数组的集合。用于迭代集合子集的数据结构

我将需要迭代我的收藏多次。

为了提高性能,我想限制每个迭代到集合的一个子集。而不是整个集合。

例如:仅在那些在第4和第13位

我不需要寻找真值FALSE数组进行迭代。仅适用于阵列某些位置的FALSE值。

请注意,可能的子集可以共享元素,而不会将另一个包含在另一个中。

有什么样的数据结构可以帮助我吗?

+0

“第4和第13位的FALSE” - 是否存在需要检查的可能位置的固定组,或者是否应该在运行时输入任何位置以获取匹配数组?这会改变很多问题。 – Dukeling

回答

0

Knuth第三卷“分拣与检索”第6.5节中有一小段内容。有几个简单的方案,其效果有限,这表明对于这个搜索多维空间的难题,没有神奇的答案。

这里描述的一种方法(根据您的问题调整参数)是将50位分成5个10位块,并创建5个散列表,每个散列表将10位块之一的值映射到列表在给定位置中具有该值的所有记录。给定特定位位置的值,请​​选择10位块中的哪一个块包含最知名的位,并根据是否知道1来使用它来仅检查表中1024个列表中的512或256或128个列表,2或3个该位块中的位位置。