迭代集合子集

时间:2017-05-27 18:41:57

标签: algorithm data-structures

这是关于算法/数据结构的一般问题。 没有特定的编程语言。

我正在使用布尔值数组。 数组的大小始终为50。

我想拥有这些数组的集合。

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

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

例如:仅迭代第4和第13位具有FALSE的数组

我不需要搜索TRUE值。仅适用于阵列某些位置的FALSE值。

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

是否有任何类型的数据结构可以帮助我?

1 个答案:

答案 0 :(得分:0)

在Knuth Volume III“排序和搜索”第6.5节中有一个简短的部分。有一些简单的方案,其效果有限,这对我来说,这个搜索多维空间的难题没有神奇的答案。

此处描述的一种方法(根据您的问题调整参数)是将您的50位划分为5个10位块,并创建5个哈希表,每个哈希表将这些10位块中的一个的值映射到列表在给定位置具有该值的所有记录。给定特定位位置的值,选择10位块中包含最多已知位的任何一个,并使用此值仅检查表中该块的1024个列表中的512或256或128个,具体取决于您是否知道1 ,2或3个该块中的位位置。