Java metszet algoritmus?
Valaki le tudná írni a metszet algoritmusát magyarázattal?
csoportbontásban megy az óra, én nem voltam ott 1x, amit küldtek a többiek abból pedig semmit nem értek (és ők sem) Teljesen elment az életkedvem mindentől... Próbálom megérteni de nem megy 2 óra után sem.
static int metszet(int[]tömb1, int[]tömb2, int[]eredmény){
int strázsa = 0;
for(int elem:tömb1)
for(int elem2:tömb2)
if(elem == elem2){
boolean van = false;
for(int i = 0; i<strázsa; i++)
if(elem2==eredmény[i])
van = true;
if(!van)
eredmény[strázsa++] = elem;
}
return strázsa;
}
Ez az algoritmus, de nem értem, ha a strázsa 0, akkor hogyan megy tovább a for ciklusban?
NAgyjából így működik:
A külső ciklus végigmegy első tömbön. A ciklus minden lépésében (az első tömb minden elemére) végigmegy a második ciklus a második tömbön, és megnézi, egyezik-e a második tömb valamelyik eleme az első tömb aktuális elemével. Ha igen, akkor ez az elem benne lesza metszerben. Ekkor az eredménytömbben a strázsa által jelölt indexig ellenőrzöd, hogy beraktad-e már ezt az elemet korábban az eredmények közé. Ha nem, akkor növeled a strázsát eggyel, és berakod a strázsa áltl jelölt indexre az elemet. A függvény végén meg visszatér a strázsa értékével.
(Az eredmény[strázsa++] = elem azt jelenti, hogy berakod a strázsa által jelölt indexre (kezdetben a 0. indexre) az elemet, mindeközben a strázsa értékét növeled 1-el)
Összehasonlítod az egyik tömb összes elemét a másik tömb összes elemével.
Ha van olyan elem, ami mindkét tömben megtalálható, akkor azt beteszed az eredmény tömbbe.
De csak akkor teszed bele, ha az az elem még nem szerepel az eredmény tömbben.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!