Milyen logikát követ ez? El tudná valaki magyarázni? (JS)
Konkrétan az ES5-ös verzióra lennék kíváncsi. Először ugye létrehoz egy tömböt adott tagokkal + pár más változót különféle céllal. Addig értem, hogy végigiterál a tömbön és, ha nem tévedek azt vizsgálná, hogy van-e azonos elem a tömb elemei közt, de, hogy vektorra miért használ beépített ciklust és hogy mi történik a második feltételes elágazás után az már elég homályos...
A feladat emgtalálni a leggyakoribb elemet a tömbben. Ehhez mit csinál?
Minden egyes tömb beli elemre megszámolja az utána következő elemekben az adott érték előfordulását (ez a beágyazott ciklus), az előfordulást eltárolva az m változóban, majd ha az m nagyobb mint az mf, amiben a leggyakoribb előfordulást tárolja, akkor kicseréli az új értékekre. Hogy miért j=i-től kezdődik a beágyazott ciklus? Mert fölösleges az i. elem előttieket már megnézni. Ha szerepel az adott érték előtte, akkor már megszámolta azt az értéket korábban (és igazából ezesetben nem is kellene újra megszámolni, de ilyen szempontból nem túl optimalizált az algoritmus), ha meg ez az adott érték első előfordulása, akkor nem szerepel az i. elem mögött. Ezzel n^2-ről n(n+1)/2-re módosul az iterációk száma.
Külső for ciklus csak akkor lép tovább, ha a belső for ciklus végigment az összes rákövetkező elemeken a ciklusban.
Ha a rákövetkező elem megegyezik az aktuális elemmel(külső for ciklus), akkor növeli az m értékét (ez reprezentálja, hogy az adott elemből már hányat találtunk).
Az mf reprezentálja azt hogy a leggyakoribb elem hányszor található meg a sorozatban.
Ha a belső for ciklus végetért, akkor a külső lép eggyel tovább, az m-et nullázni kell, újrakezdjük a vizsgálódást.
Mindez megy az utolsó elemig.
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!