Gyakorlati alapok
2 tömb különbsége
A különbség az a halmazelem-csoport, amely 2 halmazból úgy keletkezik, hogy az első halmaz elemei közül csak azokat tartalmazza, amelyeket a második nem.
Az alábbi példakódban az átláthatóság kedvéért 2 db fix int értékekkel feltöltött tömbből indulunk ki:
int[] tomb1 = new int[] {1, 3, 5, 7, 9, 11, 13};
int[] tomb2 = new int[] {2, 4, 6, 8, 9, 10, 13};
A különbségi tömb mérete - feltételeiből adódóan - maximum tomb1 méretű lehet:
int[] tombKulonbseg = new int[tomb1.length];
A különbségi feltétel vizsgálatához mindkét tömb összes elemét egymással össze kell hasonlítanunk. Ez alapértelmezésben egymásba ágyazott (nested) for ciklusok használatát jelenti. A belső ciklusban történik az összehasonlítás, ha az elemek egyeznek (if(tomb1[i] == tomb2[j])), felesleges a belső ciklusnak tovább futnia (break), másként pedig a különbségi elemeket kapjuk meg.
Nézzük meg futtatható Java-kódos változatot:
public class Main {
public static void main(String[] args) {
int[] tomb1 = new int[] {1, 3, 5, 7, 9, 11, 13};
int[] tomb2 = new int[] {2, 4, 6, 8, 9, 10, 13};
int[] tombKulonbseg = new int[tomb1.length];
for(int i = 0; i < tomb1.length; i++) {
boolean egyenlo = false;
for(int j = 0; j < tomb2.length; j++) {
if (tomb1[i] == tomb2[j]) {
egyenlo = true;
break;
}
}
if (egyenlo == false) {
tombKulonbseg[i] = tomb1[i];
System.out.print(tombKulonbseg[i] + " ");
}
}
}
}
Végeredmény:
1 3 5 7 11