4

我已经搜索了具有类似问题的其他线程,但我找不到任何适用于我的线程。如果我有一个具有某些值的变量,以及一个具有值列表的数组......我是否可以有效地(时间效率,空间不是约束)在变量时找出数组的索引匹配数组中的元素?

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

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

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

4

1 回答 1

2

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

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

  • 现在, makew[v[i]] = 1和其余的w[ ] = 0. 这基本上是说“如果x is a value in array v[ ], then w[x] = 1”。(注意:如果你w[ ]全局声明,它的所有位置都会被初始化为0,默认情况下)

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

如果您对每个数组进行多次检查,这应该会很好。但是请注意,它w[ ]的大小可能会变得非常大。

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

于 2012-11-29T07:18:08.880 回答