2015-09-22 72 views
-4

而不是有两个for循环:首先从(var = i)1到输入数组的长度-1,第二个从i到length(使用var k),然后比较每个数组[i] == array [k],如果找不到相同的对,则返回true。重复识别算法

只有一个数组被用作这个算法的单个参数。

这还可以优化吗?

+0

如果您正在尝试执行搜索,您可以尝试一个二进制搜索,该搜索将在(合并排序的)已排序数组上进行操作。可能,这将是一种优化的搜索方式。 –

+0

这就是Θ(n lg n)?我目前的算法Θ(n^2)? – DrData

+0

在你的一些评论中有误导性。你想*在两个不同的数组中找到匹配*,或者*在一个数组中找到重复值*? –

回答

0

根据内存限制,有几种方法可以解决这个问题。

使用常量内存,您可以对2个数组O(nlogn)进行排序,并将这些数组分组在一起,如果数目较小,则将指针推进。这将是O(n)。这总计为O(nlogn)。

如果您可以使用O(n)内存,则可以从第一个数组(O(n))创建一个哈希集,然后遍历第二个,如果该集包含来自第二个数组的数,则中断。这将是O(n)的N * O(1)。