Gyakorlati alapok

2 tömb metszete

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Az unió során 2 vagy több halmaz úgy képez egy új halmazt, hogy az így létrejövő halmaz az eredeti halmazok összes elemét tartalmazza (de csak egyszer) és más elemet ne tartalmazzon. A metszet pontosan ennek ellentéte: a közös elemeket keressük (szintén egyszeresen).

 

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 tomb1 és tomb2 közös részei a 9 és 13. A közös rész a tombMetszet-be kerül, amelynek méretét nem látjuk előre, de határértékei a 0 és a kisebbik tömb mérete között lehet. Mivel a 2 alaptömb mérete most azonos, legyen a méret tomb2-nyi:

 

int[] tombMetszet = new int[tomb2.length];

 

A közös elemeket csakis úgy tudjuk megtalálni, ha az alaptömbök minden egyes elemét összehasonlítjuk egymással. Ha azonosak, az elem közös rész lesz. Ehhez egymásba ágyazott (nested) for ciklusokat kell felhasználnunk:

 

for(int i = 0; i < tomb1.length; i++){
    for(int j = 0; j < tomb2.length; j++){
        if(tomb1[i] == tomb2[j]){
            tombMetszet[i] = tomb1[i];
        }
    }
}

 

Nézzük meg futtatható Java-kódos változatot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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[] tombMetszet = new int[tomb2.length];

    for(int i = 0; i < tomb1.length; i++){
        for(int j = 0; j < tomb2.length; j++){
            if(tomb1[i] == tomb2[j]){
                tombMetszet[i] = tomb1[i];
            }
        }
    }
    for(int i = 0; i < tombMetszet.length; i++){
        System.out.print(tombMetszet[i] + " ");
        }
    }
}

 

Végeredmény:
0 0 0 0 9 0 13

 

Ha zavar minket a sok 0, könnyen eltüntethetjük őket:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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[] tombMetszet = new int[tomb2.length];

    for(int i = 0; i < tomb1.length; i++){
        for(int j = 0; j < tomb2.length; j++){
            if(tomb1[i] == tomb2[j]){
                tombMetszet[i] = tomb1[i];
            }
        }
    }
    for(int i = 0; i < tombMetszet.length; i++){

        if(tombMetszet[i] != 0){
            System.out.print(tombMetszet[i] + " ");

            }
        }
    }
}

 

Végeredmény:
9 13

 

Vagy:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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[] tombMetszet = new int[tomb2.length];

    for(int i = 0; i < tomb1.length; i++){
        for(int j = 0; j < tomb2.length; j++){
            if(tomb1[i] == tomb2[j]){
                tombMetszet[i] = tomb1[i];

                System.out.print(tombMetszet[i] + " ");
                }
            }
        }
    }
}

 

Végeredmény:
9 13