我已经搜索了其他有类似问题的线程,但找不到适合我的线程。 如果我有一个具有某些值的变量和一个具有值列表的数组...我是否有可能有效地(时间高效,空间不是约束)找出索引 当变量与数组中的元素匹配时数组的?
我正在从一个大文件中读取变量,对每一种可能性进行强力迭代将意味着数百万次迭代。作为最后的手段,我愿意这样做,但我宁愿不这样做。 :)
如果算法依赖于 C,我正在用 C 编程。我没有用 C++/Python 编程的选项。 谢谢!
编辑:我想与数组匹配的值成对出现 (x,y)。如果数组与 x 或 y 匹配,我将进一步处理 (x,y)。但重要的是,如果我必须对它进行排序,则顺序不能改变。
最佳答案
如果空间不是问题,并且您想知道数组中是否包含一个值,您可以这样做:
首先,创建一个新数组。让我们调用旧的
v[ ]
,新的w[ ]
,并让i
成为您通过v[ ] 的迭代器
.现在,使
w[v[i]] = 1
,而w[ ] = 0
的其余部分。这基本上是说“如果x 是数组 v[ ] 中的一个值,则 w[x] = 1
”。 (注意:如果你全局声明w[ ]
,它的所有位置都将默认初始化为0)每当您想检查
v[ ]
中包含的值时,请改为检查w[value]
。如果等于 1,那么答案是肯定的。
如果您对每个数组进行多次检查,这应该会很好地工作。不过请注意,w[ ]
的大小可能会变得相当大。
编辑:如果您还想保留索引,可以将 w[ ]
中的 1 替换为实际位置 - 只要值不重复,就可以正常工作。
关于c - 变量与存储在数组中的值的高效匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014846/