Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – Merge Sort

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na Peter Mlich
Patrik Pastor:21.4.2019 8:46

jak je to s tou rekurzi a slitim. Kdzy je podminka rekurze, ze se mi vrati z metody pri velikosti pole 1 (a mensi, ale mensi uz nebude, kdyz to dojde nejdriv na 1ku), tak ani k tomu sliti prece nedojde, protoze rekurze je volana PRED slitim. Nebo se vola rekurze, interpet pokracuje na prikaz sliti(merge)?

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Patrik Pastor
David Hartinger:21.4.2019 11:58

To je správně, že je rekurze volaná před slitím, až se zní vystoupí a program se tam vrátí, tak se oba výsledky rekurze slijí a vznikne tak nový výsledek rekurze, který se vrátí a tak dále. Z toho co jsi napsal mi přijde, že ti není úplně jasné jak rekurze funguje. Dej si na konec metody break point a odkrokuj si algoritmus v IDE.

Máš to na tom obrázku. Na konci metody se volá vždy slití. To se neprovede jen v případě, že je pole o velikosti 1. Takže se to vše rekurzivně provolá až zbude pole o velikosti 1. Teď se rekurze ukončí a výsledek se postupně začne vracet do řetězce metod, jak čekají na výsledek. Metodě, která měla pole o velikosti větší než 1, se pak vrátí 2 pole o jednom prvku a ona je slije. Metodě, co ji volala, se opět vrátí tento výsledek a ten slije s výsledkem druhé metody, kterou spolu s ní zavolala a tak dále.

Odpovedať
New kid back on the block with a R.I.P
Avatar
Odpovedá na David Hartinger
Patrik Pastor:21.4.2019 12:36

aha. Ja jsem totiz myslel, ze jak je ta rekurzivni podminka (if pole.length <= 1) return. Tak ze to slovicko "return" v te podmince celou metodu znici (ve smyslu ze program uz je MIMO tuto metodu (diky tomu return), a ke sliti by tedy nedoslo, protoze to sliti je UVNITR metody, ale prace tim return by uz program byl mimo metodu. Doufam ze rozumis, jak to myslim, ale ted chapu.

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Patrik Pastor
David Hartinger:21.4.2019 12:56

No to tak také je, nic po return se už nezavolá. Ale ta metoda, i když se násilně ukončí pomocí return, byla zavolána před slitim z předchozí metody. Program se tam tedy vrati a výsledky slije. Kdyz zavoláš někde nějakou metodu, program si to pamatuje a po jejím ukončení jakýmkoli způsobem se na toto místo vrátí. Psal jsem ti, ať si to odkrokujes, pak to uvidíš hned :-) Vážně si to zkus.

Editované
Odpovedať
New kid back on the block with a R.I.P
Avatar
MarMin
Člen
Avatar
MarMin:31.3.2020 15:25

Je možné, že mi pro různá pole stejné délky vychází při řazení mergesortem stále stejný počet kroků nebo mám chybu v programu. U mocnin dvojky je to přesně.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 6 správy z 16.