变量与存储在数组中的值的有效匹配

时间:2012-10-22 15:38:38

标签: c linux arrays pattern-matching

我搜索了其他类似问题的主题,但我找不到任何适合我的主题。 如果我有一个具有某些值的变量,以及一个具有值列表的数组......我可以有效地(时间有效,空间不是约束)找出索引?

我从阅读大量文件中获取变量,并且对每种可能性进行迭代的暴力将意味着数百万次迭代。作为最后的手段,我愿意这样做,但我宁愿不这样做。 :)

如果算法依赖于此,我正在用C编程。我没有选择用C ++ / Python编程。 谢谢!

编辑:我想要与数组匹配的值成对出现(x,y)。如果数组与x或y匹配,我进一步处理(x,y)。但是,如果我必须对它进行排序,那么排序不会改变是至关重要的。

1 个答案:

答案 0 :(得分:2)

如果空间不是问题,并且您想知道数组中是否包含值,则可以执行以下操作:

  • 首先,创建一个新数组。让我们调用旧的v[ ],新的w[ ],让i通过v[ ]成为您的迭代器。

  • 现在,制作w[v[i]] = 1w[ ] = 0的其余部分。这基本上是“if x is a value in array v[ ], then w[x] = 1”。 (注意:如果您全局声明w[ ],默认情况下,其所有位置都将初始化为0)

  • 每当您想要检查v[ ]中包含的值时,请检查w[value]。如果它等于1,那么答案是肯定的。

如果你对每个数组进行多次检查,这应该可以很好地工作。但要注意,w[ ]的大小可能会非常大。

编辑:如果你想保留索引,你可以用w[ ]替换实际位置的1 - 只要值不重复,这就行得很好。