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
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++; } } }
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.
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();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With