我有一个生成大约 600 万个唯一数组的 C 函数。这些数组每个总是有 17 个元素,每个元素都是从 0 到 16 的整数。我还有一个稍微修改过的函数版本,它也将生成大约 600 万个相同类型的唯一数组。我的问题是第二个产生的结果比第一个少大约 45,000 个,我想看看这些结果是什么。
所以我的方法是简单地存储第二个函数的所有结果(计算器告诉我这不应该超过 400 mb,这可以保存在内存中)然后查找第一个函数的结果,打印出那些不存在。
假设一般方法是有意义的(如果没有,请告诉我),我正在寻找的是一个合适的数据结构(最好在 C 中具有良好的实现),它可以容纳大约 600 万个独特的排列
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
(或其一些转换),然后对它们执行快速成员资格测试。正如标题所说,我确实怀疑哪些数据结构可以完成这项工作,但我不确定尝试或哈希图是最好的选择。
这是一种用于检测另一个算法中的缺陷的算法,而不是在生产中使用的东西。我有兴趣以一种可以编码并以人类术语相对快速地返回结果的方式来执行此操作,不一定要减少毫秒,因此存在可以完成大部分工作的易于 grok 库绝对是一个加分项。