Jak fungují nejznámější seřazovací algoritmy?

Řadící algoritmy slouží k řazení čísel od nejmenšího po největší a nebo třeba k řazení textů podle abecedy. V tomto videu si vysvětlíme podrobné fungování nejznámějších řadících algoritmů a také porovnáme, které z těchto algoritmů jsou nejefektivnější.
Můj Discord: github.com/Grizlikk/GrizlikYT...
0:00 Úvod
0:35 Notace velkého O
0:50 Bubble sort
2:18 Selection sort
3:20 Insertion sort
5:58 Quick sort
8:40 Co je to logaritmus
9:38 Základ logaritmu
10:38 O(log n)
10:48 O(n log n)
11:19 Merge sort
13:55 Paměťová náročnost programů
14:48 Závěr

Пікірлер: 34

  • @karelcerny34
    @karelcerny3411 ай бұрын

    Like

  • @Rift_Walker_Lombax
    @Rift_Walker_Lombax11 ай бұрын

    Dík moc, super video

  • @dominikvrba6210
    @dominikvrba621011 ай бұрын

    Moje druhá škola 😂

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    Noice :D

  • @dominikvrba6210

    @dominikvrba6210

    11 ай бұрын

    @@GrizlikD :D

  • @kounasmates99
    @kounasmates9911 ай бұрын

    Super video :D

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    Díky :D

  • @MynecraftCZ
    @MynecraftCZ11 ай бұрын

    Ta část s log_2 je nepravdivá. Používá se jen log, protože podle pravidel pro logaritmy platí, že log_2(n) = log(n)/log(2) = 1/log(2) * log(n) a 1/log(2) je konstanta kterou můžeme zanedbat. totéž můžeme udělat pro libovolný jiný základ, takže na základu logaritmu nezáleží.

  • @frantisekjanecek1641
    @frantisekjanecek164110 ай бұрын

    Jestli jsem dobře pochopil tvoje vysvětlení notace O(), tak je to stejně jedno, s jakým základem ten logaritmus je zapsán. Logaritmy s jiným základem se liší pouze o konstantní koeficient. Kdyby tu někoho napadla taková otázka.

  • @GrizlikD

    @GrizlikD

    10 ай бұрын

    Ano, podle definice notace velkého O je jedno, jaký základ má ten logaritmus Problém je, že podle definice notace velkého O můžu například říct, že O(n) = O(n²), ale to jsem v tom videu radši ani nezmiňoval :D Každopádně pro představu mi přišlo lepší zmínit, že je to vždy logaritmus ze základem 2, u toho binárního vyhledávání je ten rozdíl vidět asi nejlépe, že když rozděluji to pole hodnot na poloviny, tak logicky základ musí být 2 a ne 10

  • @KrakonosovoBabka
    @KrakonosovoBabka10 ай бұрын

    Pro přehlednost by bylo podle mě fajn ukazovat i nějakou implementaci pro představu.

  • @dmkin4420
    @dmkin442011 ай бұрын

    Otázka, keby mal merge sort nepárny počet čísel tak by to posledné číslo zoradilo na konci? Inak super video 👍

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    Ono by to jedno z těch čísel prostě nechalo být už při tom rozdělování, kdybys měl například sedm čísel, tak by to vytvořilo tři dvojičky a jedno číslo by zůstalo navíc a jak by ten program zpátky spojoval ty pole, tak místo aby spojil dvě dvojičky čísel dohromady, tak by stejnou metodou spojil jednu tu dvojičku s tím samostatným číslem, takže by se nic nerozbilo

  • @hmmh-qq
    @hmmh-qq10 ай бұрын

    Na celé čísla je radikálne najlepší radix-sort so základom 256.

  • @hermikstudio
    @hermikstudio11 ай бұрын

    Ahoj Grizlíku chtěl bych se zeptat zda je virus že když zapnu PC tak se mi při každem zapnutí spustí příkazový řádek dříve to nedělalo teď pokažde když ho zapnu

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    To může jenom nějaká aplikace, která se spouští na pozadí, tohle dělá docela dost aplikací, takže to nejspíš nebude virus ;)

  • @hermikstudio

    @hermikstudio

    11 ай бұрын

    @@GrizlikD Dobře děkuji moc za odpověď

  • @SokyhoGulas
    @SokyhoGulas11 ай бұрын

    ukaž program sound of sorting :D

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    To mi vždycky přišlo hrozně o ničem, akorát ty zvuky, co to vygeneruje, jsou celkem dobré :DDD Jenom se z toho nedá pochopit, jakým způsobem ten program postupuje

  • @zerta5865
    @zerta586511 ай бұрын

    (PROSÍM PŘEČÍST CELÉ) Zdarec dokázal by jsi udělat nějaké video jak opravit Blue screen? Mám problém s mým notasem je sice už děda ale na tuhle dobu je furt super ale z ničeho nic ze dne na den když jsem chtěl zapnout hru (valorant) kterej jsem do té doby hrál už docela dlouho tak se mi to vyplo a po druhém zapnutí mi to hodilo Blue screen to samé třeba i u csgo hází mi to code s nějakým hardwarem a s grafikou něco a pak nějaké další Cody ale nejdivnější mi na tom přijde to že to začalo ze dne na den několik codu a nikdy předtím to nedělalo občas mi to udělá i u stahování nebo občas i u zapnutí Google nebo podobně jendoduse ten noťas se teď snížil na úroveň staršího PC který rozjede starší hry ale jen kvůli Blue screenu mám pocit že bude problém někde v PC ale ne v komponentech jak říkám pochybuju že by hromada problémů přišla ze dne na den z ničeho nic budu rád aspoň za odpověď nebo radu děkuju :)

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    Windowsy se po delším čase samy od sebe začnou kazit, můj aktuální a i předchozí počítač už má přeinstalovaný Windows, protože ten, který tam byl od začátku, prostě přestal fungovat Obvykle napřed zkouším takové klasické věci, jako "sfc /scannow" do příkazového řádku a nebo přeinstalovat ovladače komponentů, případně už tovární nastavení a nebo rovnou přeinstalaci Windows, poté je ten počítač znatelně rychlejší Když už je to starší notebook, tak může být problém i s tím, že se přehřívá, protože je například zanesený prachem, proto bych ho doporučoval jednou za čas vyčistit :D Samozřejmě může to být i chyba hardwaru, ale to se stává jen extrémně výjimečně, protože na těch komponentech už není co by se pokazilo, pokud se je například nesnažíš přetaktovat do obrovských rychlostí

  • @sgmvideos5175
    @sgmvideos517510 ай бұрын

    Proč je potřeba více paměti na merge sort? Prostě se jen použije rekurze na část toho pole... jasně, bude to trochu nepřehledné, ale paměti navíc skutečně není zapotřebí víc, než co sežere rekurze.

  • @GrizlikD

    @GrizlikD

    10 ай бұрын

    Nejjednodušeji bych to vysvětlil asi takto: Kdybych s merge sortem řadil pole o délce 8 čísel a už bych se dostal do stavu, že mám dvě seřazené pole o délce 4 čísel, musel bych je nějak spojit do jednoho seřazeného pole o délce 8 čísel, tak, jak je ukázáno ve videu (porovnávám krajní pozice a posouvám se doprava) Na tohle tedy musím mít ty dvě seřazené pole o délce 4 čísel, ze kterých budu vybírat ty hodnoty, ale pak ještě musím mít nějaké třetí pole o délce 8 čísel, kde ty hodnoty budu ukládat a právě to zabere další paměť Zde často vyvstává otázka: _A proč nemůžu ty hodnoty seřadit v rámci toho jednoho pole a musím je kopírovat do nového pole?_ To je kvůli tomu, jak je merge sort udělaný: Merge sort dokáže být velice rychlý kvůli tomu, že napřed vytvoří dvě seřazené pole a až pak je jde spojovat do jednoho. Kdybych ale začal přehazovat hodnoty v těch seřazených polích, tak bych si je tím rozházel. Proto je kód merge sortu obvykle napsaný tak, že si vytvoří úplně nové pole, do kterého pak ukládá seřazené výsledky

  • @sgmvideos5175

    @sgmvideos5175

    10 ай бұрын

    jo jo, pravda, dnes jsem si to otestoval, jsou způsoby jak to udělat s tím jedním polem, ale cena je rychlost/paměť :D

  • @GrizlikD

    @GrizlikD

    10 ай бұрын

    @@sgmvideos5175 V dnešní době už počítače mívají několik GB RAM, proto se vývojáři obvykle snaží upřednostňovat rychlost i za cenu vyššího využití paměti

  • @Rift_Walker_Lombax
    @Rift_Walker_Lombax11 ай бұрын

    Napadl mě algoritmus, který je pravděpodobně efektivní, ale nevím, jestli už není někde zaznamenaný

  • @GrizlikD

    @GrizlikD

    11 ай бұрын

    No můžeš ho vyzkoušet a porovnat třeba proti Quick Sotru, ale dneska je těch známých algoritmů hrozně moc, ale používá se především Quick Sort a Merge Sort, protože jsou nejefektivnější a také je možné je spustit na více jádrech procesoru

  • @MynecraftCZ

    @MynecraftCZ

    11 ай бұрын

    tak ho popiš. zajímá mě to.

  • @Rift_Walker_Lombax

    @Rift_Walker_Lombax

    11 ай бұрын

    @@MynecraftCZNa začátku by se vybrala náhodně dvě čísla, porovnala by se a větší by se dosadilo nakonec a menší na začátek, poté by se každé číslo v řadě porovnali s oběma čísly, jestliže by bylo větší než poslední dosadilo by se nakonec a zbytek řady by se posunul, stejně by to fungovalo pokud by bylo menší než první číslo, jen by se dosadilo na začátek, jestliže by ani jedna podmínka neplatila, zůstalo by na místě. Po projití jedné řady by na konci a začátku byla dosazeno největší a nejmenší číslo, při dalším procházení by to fungovalo stejně, jen čísla dosazená na konec po předešlém projití by zůstala stále na místě a více by se nepracovalo(největší čísla v novém cyklu by se dosadila největší před poslední a nejmenší za první). Čísla by byla seřazena ve chvíli, když by se dokončila operace u posledních dvou číslic, nebo by zbylo poslední jedno. Doufám, že je to pochopitelně vysvětleno.

  • @MynecraftCZ

    @MynecraftCZ

    11 ай бұрын

    @@Rift_Walker_Lombax Zajímavý algoritmus. Dal by se trochu učesat - první krok s náhodným výběrem dvou čísel podle mě není potřeba. Čísla která jsou od začátku na krajích můžeme považovat za náhodná. Po této úpravě by se dal algoritmus nazvat jako oboustranný selection sort - kromě minim hledá i maxima.

  • @Rift_Walker_Lombax

    @Rift_Walker_Lombax

    11 ай бұрын

    @@MynecraftCZ To je pravda, díky. Právě ten výběr mě napadl od quick sortu, různé metody pro vybrání pivotu

  • @KrakonosovoBabka
    @KrakonosovoBabka10 ай бұрын

    To že je buble sort extrémně neefektivní neni vždycky pravda. U malých setů je víc než dostatečný.Ten queck sort byl strašně špatně vysvětlenej. Quick sort si to pole taky dělí jako merge sort. Co se týče log, jsem si dost jistej že log bez base je jako log base 10. Vůbec nebyl zmíněný radix sort, který je nejefektivnějš pro velké sety.

  • @hmmh-qq

    @hmmh-qq

    10 ай бұрын

    Radix-sort funguje len na celé čísla a je efektívny na hocijaké sety, pokiaľ sa nebude pre malé sety alokovať buffer.

  • @KrakonosovoBabka

    @KrakonosovoBabka

    10 ай бұрын

    nefunguje jen na celá čísla s trochou přemýšlení. @@hmmh-qq na malý sety je taky rychlý, ale quicksort je univerzálnější, protože je porovnávací. Proto je ve většině jazyků sort naimplementován právě quick sortem.