如何比较两个未排序的int数组中的值?

时间:2016-06-06 11:03:33

标签: c# arrays

我需要在两个int数组中找到相同的值(如果有的话)。 我认为它适用于二进制搜索,但我不知道如何做到这一点。 e.g:

    g1[95 78 99 95 35 65 95]
    g2[67 100 95 76 95 99 60]

    the function returns 2 (for 95 and 99).

7 个答案:

答案 0 :(得分:1)

您可以使用Enumerable.Intersect

int[] duplicates = g1.Intersect(g2).ToArray();

如果您只想知道重复数量:

int duplicates = g1.Intersect(g2).Count();

答案 1 :(得分:1)

您可以使用LINQ Intersect

        var g1 = new[] { 95, 78, 99, 95, 35, 65, 95 };
        var g2 = new[] { 67, 100, 95, 76, 95, 99, 60 };
        var result = g1.Intersect(g2).Count();

答案 2 :(得分:1)

Var duplicates = g1.Intersect(g2).Count();

希望它有所帮助。

答案 3 :(得分:0)

试试这个

            int[] g1 = { 95, 78, 99, 95, 35, 65, 95 };
            int[] g2 = { 67, 100, 95, 76, 95, 99, 60 };

            int[] results = g1.Where(x => g2.Contains(x)).Distinct().ToArray();

答案 4 :(得分:0)

每个应该嵌套:

void a(int[] g1, int[] g2)
{
    int counter = 0;
    foreach (var x in g1)
    {
        foreach (var y in g2)
        {
            if (y == x) counter++;
        }
    }
}

答案 5 :(得分:0)

试试这个

int compare(int g1[], int g2[])
{
    int count = 0;
    for(int i=0; i < g1.length; i++)
    {
        for(int j=0; j < g2.length; j++)
        {
          if(g1[i] == g2[j])
            count = count + 1;
        }
    }
    return count;
}

此代码将g1的每个数组元素与所有第二个数组元素(g2)进行比较,如果他找到一个等于增加计数器的元素。代码有点大,但我认为你更容易理解它是如何工作的

答案 6 :(得分:0)

使用相交 var r = g1.Intersect(g2)并使用foreach循环从r获得值。