【发布时间】:2012-08-01 17:24:13
【问题描述】:
给定几组元素,例如:
int set1[5] {5601, 935, 4153, 2195, 422};
int set2[5] {5601, 935, 23, 44, 422};
int set3[5] {4205, 935, 4153, 2195, 15};
int set4[5] {4205, 589, 4015, 44, 422};
如果顺序很重要(即 1、2、3 与 2、1、3 不同),定位特定集合的有效算法是什么?例如,您要定位:
int value[5] {5601, 935, 23, 44, 422};
注意事项:
新集合的插入成本不是问题,因此它们可以存储在任何数据结构中,以优化搜索时间。
每个集合将包含 1 到 1,000,000 个元素(大约,并且将有 1 到 1000 个集合(同样,大约)。但是对于任何给定集合,元素的数量将始终相同集合(例如,如果一个集合有 10 个元素,那么所有集合将有 10 个元素)。
后续问题,我将在 C++ 中实现它,因此我有兴趣了解任何推荐的算法,无论它们是否存在于开源 C++ 库(最好是 STL、Boost 或 QT,但我'也会考虑其他人)。
【问题讨论】: