【发布时间】:2011-09-28 20:32:46
【问题描述】:
有大量具有以下类型的条目:
typedef struct {
int value;
int mask;
int otherData;
} Entry;
我想尽快根据提供的int key; 在这个数组中找到一个条目。需要输入以确保(key & mask) == value。
这样的数组组织最好的方式是什么,对应的算法是什么处理呢?
编辑:对数组组织没有限制;它是静态的,可以在查找之前准备好。 value 和 mask 可以有任意值。
Edit2:value 和 mask 可能有任意值,但数组中的条目数约为 10000。因此,可以提前计算某些“模式”。
查找次数很大。
【问题讨论】:
-
是否保证给定键的数组中只有一个条目?
-
对key和mask有什么限制吗?没有某种限制,只有线性搜索才有意义
-
补充:阵列组织没有限制。因此,例如可以对其进行排序。
找到第一个适用的条目就足够了 -
请添加一些额外的约束或告诉我们是否没有任何约束。您是否使用了一组有限的掩码?您是否经常搜索相同的面具?找到匹配元素的概率高吗? ...
-
从数组中丢弃任何不符合
(value & mask) == value的条目开始,因为它们永远不会匹配。
标签: c++ c algorithm search mask