数组算法中的匹配

时间:2012-05-04 12:59:41

标签: arrays algorithm match

我有一系列项目,我需要找到匹配的项目(重复项目)。我现在运行最简单的O(n ^ 2)算法。项目类型并不重要,但如果你想知道它的形象。

myarray;   
for(i = 0; i < myarray.length - 1; i++) 
    for(int j = i+1; j < myarray.length; j++) 
        if(myarray[i] = myarray[j]) 
           output(names of items);

我试过维基百科和谷歌,但无法得出答案。任何语言的任何链接或算法或代码都会很棒。

3 个答案:

答案 0 :(得分:1)

如果您可以在商品上找到订单,请对其进行排序。然后,找到相同的项目非常简单,因为它们将彼此相邻。

这只是O(n * Log(n))。

答案 1 :(得分:1)

要在数组中查找重复项,您可以对列表进行排序和扫描,在O(n log n)中查找相邻的相同项目。 如果您只想输出重复项,并且内存不是问题,您可以保留已经看过的元素的哈希集,遍历数组,检查当前元素是否在您的集合中。如果是,则将其输出为重复,否则将其插入到集合中。那将是O(n)

答案 2 :(得分:1)

为什么不将每个项目添加到自平衡二叉树中,而不是排序然后比较相邻项目,因此您可以免费获得“已经存在”的检查(有点)。