ในบทความนี้ เราจะพูดถึงโปรแกรมค้นหายูเนียนและจุดตัดของอาร์เรย์ที่ไม่มีการจัดเรียงสองตัว
ให้เราแสดงสองอาร์เรย์ด้วย 'A' และ 'B' จากนั้นการรวมอาร์เรย์เหล่านี้จะแสดงด้วย A ∪ B ซึ่งโดยพื้นฐานแล้วเป็นอาร์เรย์ขององค์ประกอบทั้งหมดในทั้งอาร์เรย์ที่กำหนด โดยให้แต่ละองค์ประกอบซ้ำเพียงครั้งเดียว
เพื่อหาสิ่งนี้ เราจะสร้างอาร์เรย์แยกต่างหากและคัดลอกองค์ประกอบทั้งหมดจากอาร์เรย์แรก จากนั้นเราจะสำรวจผ่านองค์ประกอบของอาร์เรย์ที่สองและตรวจสอบว่ามีอยู่แล้วในอาร์เรย์ของยูเนี่ยนหรือไม่ หากไม่เป็นเช่นนั้น เราจะเพิ่มไปยังอาร์เรย์ยูเนี่ยน
ในทำนองเดียวกัน จุดตัดของสองอาร์เรย์จะแสดงด้วย A ∩ B. เป็นอาร์เรย์ขององค์ประกอบที่มีอยู่ในทั้งอาร์เรย์ที่กำหนด
สำหรับสิ่งนี้ เราจะสำรวจผ่านองค์ประกอบของอาร์เรย์แรกทีละรายการ พร้อมกันเราจะตรวจสอบว่าองค์ประกอบนั้นมีอยู่ในอาร์เรย์ที่สองหรือไม่ หากมีองค์ประกอบอยู่ในอาร์เรย์ทั้งสอง เราจะเพิ่มองค์ประกอบดังกล่าวในอาร์เรย์ของจุดตัด
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int len1 = 4, len2 = 3, flag1 = 0, flag2 = 0;
int array1[len1] = {1,2,3,4}, array2[len2] = {5,3,4};
int uni[len1+len2] = {1,2,3,4}, inter[len1];
for(int k = 0; k < len2 ; k++) {
flag1 = len1;
for(int m = 0; m < len1; m++) {
//eliminating common elements among the given arrays
if(array2[k] == uni[m])
break;
else if(m == len1-1) {
uni[flag1] = array2[k];
flag1 = flag1+1;
}
}
}
for(int q = 0; q < len1; q++) {
for(int w = 0; w < len2; w++) {
//checking if both arrays contain a particular element
if(array1[q] == array2[w]) {
inter[flag2] = array1[q];
flag2 = flag2+1;
break;
}
}
}
cout << "Union :" <<endl;
for(int u = 0; u < flag1; u++) {
cout << uni[u] << " ";
}
cout << "\nIntersection :" <<endl;
for(int i = 0; i < flag2; i++) {
cout << inter[i] << " ";
}
return 0;
} ผลลัพธ์
Union : 1 2 3 4 Intersection : 3 4