代码优化 - cicle

时间:2017-01-04 03:56:08

标签: c optimization

我想做一大块代码,直到数组1的至少一个元素等于数组2的元素中的一个。

我要求社区尽可能地分享最好的(最快的处理方式)来做到这一点“而”

总结:

while (none of the elements from arr1 is equal to any of arr2)

{ 
    (code)
}

原因:在我的代码中,根据用户设置的某些尺寸,我的程序可能需要进行很多次n ^ 2复杂度比较,所以我正在寻找一种方法让它像我一样轻可以。

我很抱歉,如果这类问题不适合StackOverflow,请告诉我。

编辑:我没有提供有关阵列的信息。正如我所说,它的维度可能会根据用户选择的内容而有所不同,但每个人的大小应该在3到1000之间。两个整数数组。

他们的价值确实发生了变化,维度越大,发生的就越多。

1 个答案:

答案 0 :(得分:0)

评论中提到了一个散列,我同意,它可以工作,但是非常依赖于大小。 O(n^2)的开销在很多时候可以忽略不计。

否则,只需将arr1的所有元素添加到哈希集中,然后遍历arr2的元素以查看它们是否在其中。您将获得O(n)时间。不过,老实说,除非您使用的是数十万甚至数百万个元素,否则我认为支出不会那么有形,但这取决于机器,而且我还没有亲自测试过。

C ++在标准中具有std :: unordered_set。如果您使用的是纯C语言,那么我肯定可以在线获得这些实现。