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