Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intersection of two int array in C#

Tags:

c#

I am trying to find the intersection of two int array . I am using this code :

  public int[] Find_Common_Elements(int[] p1, int[] p2)
    {
        int count = 0;
        for (int i = 0; i < p1.Length; i++)
        {
            for (int j = 0; j < p2.Length; j++)
            {
                if (p1[i] == p2[j])
                {
                    count++;
                    break;
                }
            }
        }

        int[] result = new int[count];
        count = 0;
        for (int i = 0; i < p1.Length; i++)
        {
            for (int j = 0; j < p2.Length; j++)
            {
                if (p1[i] == p2[j])
                {
                    result[count++] = p1[i];
                    break;
                }
            }
        }

        return result;
    }

    public int[] BubbleSort(int[] numarray)
    {
        int max = numarray.Length;
        for (int i = 1; i < max; i++)
        {
            for (int j = 0; j < max - i; j++)
            {

                if (numarray[j] > numarray[j + 1])
                {
                    int temp = numarray[j];
                    numarray[j] = numarray[j + 1];
                    numarray[j + 1] = temp;
                }
            }
        }
        return numarray;
    }

    public int[] Find_Unique_Elements(int[] numarray)
    {
        BubbleSort(numarray);
        int element = numarray[0];
        int count = 1;
        for (int i = 1; i < numarray.Length; i++)
        {
            if (element == numarray[i])
                continue;
            else
            {
                element = numarray[i];
                count++;
            }
        }

        int[] result = new int[count];

        count = 0;
        element = numarray[0];
        result[count++] = element;
        for (int i = 1; i < numarray.Length; i++)
        {
            if (element == numarray[i])
                continue;
            else
            {
                element = numarray[i];
                result[count++] = element;
            }
        }
        return result;
    }

    public void Result()
    {
        int[] array1 = new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
             95, 85, 75, 65, 55, 45, 35, 25, 15, 05,
             10, 15, 20, 25, 30, 35, 40, 45, 50, 55
        };

        int[] array2 = new int[] { 15, 25, 35, 45, 55,
             12, 22, 32, 43, 52,
             15, 25, 35, 45, 55
        };

        int[] p1 = Find_Unique_Elements(array1);
        int[] p2 = Find_Unique_Elements(array2);
        int[] result = Find_Common_Elements(array1, array2);

        for (int i = 0; i < p1.Length; i++)
            textBox1.Text += "\n" + p1[i].ToString();
        for (int i = 0; i < p2.Length; i++)
            textBox2.Text += "\n" + p2[i].ToString();
        for (int i = 0; i < result.Length; i++)
            textBox3.Text += "\n"+result[i].ToString();
        }








    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Result();
    }

But the problem is that, the result obtained is 15 15 25 25 35 35 45 45 55 55 , and i want 15 25 35 45 55. what is the problem with this code ? Thanks for any help

like image 445
Ahad Siddiqui Avatar asked Dec 19 '13 16:12

Ahad Siddiqui


People also ask

What is intersection in C?

Set of common elements is called an intersection. The logic for intersection is as follows − k=0; for(i=0;i<size1;i++){ for(j=0;j<size2;j++){ if(a[i]==b[j]){ intersection[k]=a[i]; k++; } } }

What is union and intersection of arrays?

The union of two arrays will contain all the elements of the two arrays, the common elements will appear only once instead of twice. The intersection of the two arrays will contain the common elements of the two arrays.


1 Answers

You can use the built-in Linq Intersect extension method for this:

using System.Linq; // Make sure you include this line

public int[] Find_Common_Elements(int[] p1, int[] p2)
{
    return p1.Intersect(p2).ToArray();
}
like image 189
p.s.w.g Avatar answered Sep 22 '22 12:09

p.s.w.g