这是关于算法/数据结构的一般问题。 没有特定的编程语言。
我正在使用布尔值数组。 数组的大小始终为50。
我想拥有这些数组的集合。
我需要多次迭代我的收藏。
为了提高性能,我想将每次迭代限制为集合的一个子集。而不是整个集合。
例如:仅迭代第4和第13位具有FALSE的数组
我不需要搜索TRUE值。仅适用于阵列某些位置的FALSE值。
请注意,可能的子集可以共享元素而不会包含另一个元素。
是否有任何类型的数据结构可以帮助我?
答案 0 :(得分:0)
在Knuth Volume III“排序和搜索”第6.5节中有一个简短的部分。有一些简单的方案,其效果有限,这对我来说,这个搜索多维空间的难题没有神奇的答案。
此处描述的一种方法(根据您的问题调整参数)是将您的50位划分为5个10位块,并创建5个哈希表,每个哈希表将这些10位块中的一个的值映射到列表在给定位置具有该值的所有记录。给定特定位位置的值,选择10位块中包含最多已知位的任何一个,并使用此值仅检查表中该块的1024个列表中的512或256或128个,具体取决于您是否知道1 ,2或3个该块中的位位置。